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
什么都是浮云
什么vpn,什么跳板,尼玛都是浮云,谁也挡不住功夫网了,地球阻止不了他了,尼玛MAC都是浮云,SSL对ISP应该也是浮云,还让人活不。
修改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。
p>
- 一、 Tar包安装
- 如果下载的是源包,文件如下: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
- a) 安装openssl
- 用tar解压软件包手,执行三条命令
- #./config
- #make
- #make install
- b) 安装libpcap
- #./config
- #make
- #make install
- c) 安装libnet
- #./config
- #make
- #make install
- d) 安装libnids
- #./config
- #make
- #make install
- e) 安装libnids
- #./config
- #make
- #make install
- f) 安装Berkeley DB
- #.cd build_unix
- #../dist/configure
- #make
- #make install
- g) 安装dsniff
- #./configure
- #make
- #make install
- 程序安装好后,先查看一下网卡信息,然后开启服务器IP转发,命令如下:
- # echo "1" > /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 3 10:16 CentOS-Base.repo
-rw-r–r–. 1 root root 637 Jul 3 10:16 CentOS-Debuginfo.repo
-rw-r–r–. 1 root root 624 Oct 24 13:06 CentOS-Media.repo
-rw-r–r–. 1 root root 957 Oct 12 2010 epel.repo
-rw-r–r–. 1 root root 1056 Oct 12 2010 epel-testing.repo
查看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 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 asearch
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
gpgcheck=1
为什么要配置epel源呢
因为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 « l’ancien » 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++)
- http://blog.gentilkiwi.com/downloads/mimikatz_trunk.7z
- http://blog.gentilkiwi.com/downloads/mimikatz_trunk.zip
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 « standard », la séparation du module et de la fonction appelée se fait avec le séparateur ::
Exemple : inject::process lsass.exe sekurlsa.dll
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
Ê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.
- pilote mimikatz.sys ; manipulation noyau
Les commandes distantes peuvent être appelées en les précédants d’un :
awk printf函数
awkprintf感觉很好用,print好用多了。
和c的printf用法一样。
awk -F# '{printf("insert into info values("%s","%s","%s");n", $1, $2, $3)}' sqlfile.sql
度娘,你的编辑器啥时候好用啊。
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 一下看看端口。相信你懂的。