1.域渗透之外网打点到三层内网
2.DVWA实战篇12分钟学会 SQL 注入攻击实战
3.某商城最新CMS从0day审计到漏洞利用
4.第79篇:记一次Oracle注入漏洞提权的源码艰难过程
域渗透之外网打点到三层内网
本次项目模拟渗透测试人员在授权的情况下,对目标进行渗透测试,源码从外网打点到内网横向渗透,源码最终获取整个内网权限。源码项目属于三层代理内网穿透,源码涵盖内网穿透技术、源码51赚源码工具利用、源码手写exp、源码外网打点方法、源码流行内网渗透测试办法等,源码对个人提升很有帮助。源码
在VPS映射部分,源码首先将内网IP映射到公网,源码使用frp工具实现。源码在公网VPS上运行frps.exe -c frps.ini,源码web1上运行frpc.ini,成功访问到环境。
信息收集方面,端口探测显示、、、、端口开放,网站源代码查找后发现网上银行系统,通过弱口令和暴力破解未能爆破出用户,但在GitHub上找到源码,发现数据库文件包含普通和管理员账户信息。
SQL注入测试发现存在Hsql注入漏洞,python 安装源码 运行使用sqlmap无法获取用户名和密码,于是编写脚本成功跑出密码并登录。在另一个地址的tomexam系统中,注册用户后发现存在SQL注入,使用sqlmap获取用户信息,通过解密脚本成功登录管理员后台。
针对jspxcms-SQL注入,首页允许注册和登录,搜索历史漏洞后发现可以通过文件上传实现getshell,使用sqlmap查找表、用户和密码。登录后编写目录穿越脚本成功上传,获取webshell并使用哥斯拉连接。
内网渗透中,首先配置内网cobalt strike上线,使用frp反向代理实现。使用shell iponfig收集信息,测试与其他域内主机的连通性,查看计算机名,发现无法找到域内其他主机。查看server的IP地址,发现存在Mysql端口,尝试暴力破解后成功获取账号和密码,使用mysql用户登录Mssql服务器,通过xp_cmshell进行信息收集,使用certutil远程下载木马实现上线。
在域渗透阶段,宝塔如何安装源码使用net view查看域内主机,使用hashdump抓取用户hash值,获取域控IP地址和计算机名。编译并测试zerolgin脚本,将其设置为空密码。配置kali代理,获取域控hash值并登录,关闭防火墙使用pth上线cs,生成tcp监听后jump到域控主机,成功恢复密码并获取hash值。
项目涉及环境搭建、信息收集、工具利用、手写exp、外网打点、内网穿透、内网渗透、域渗透等全面技术,是一次从外网到内网、再到域控的完整渗透测试演练。尽管靶机未安装杀软,但此过程展示了从外网到内网、再到域控的广泛知识和技能。
DVWA实战篇分钟学会 SQL 注入攻击实战
SQL注入是一种通过操纵Web应用的查询语句来执行恶意SQL命令的攻击手段。它利用应用程序中安全漏洞,能获取或修改数据库内容。SQL注入主要分为普通注入和盲注,简单微商城源码前者通过页面显示数据逐步获取信息,后者则需猜测SQL语句的正确性。类型上,根据注入数据类型,分为数字型和字符型;提交参数方式有GET和POST等。
在低级别SQL注入实战中,通过手工注入发现DVWA网站存在漏洞。首先,在安全级别为Low的页面中,通过GET方式注入,观察报错信息判断数据库类型,然后逐步利用'字符和#符号进行测试,确定字符型注入,进一步通过联合查询获取表名、字段名和敏感信息。自动化工具SQLMap可以协助探测数据库和表信息,甚至解密密码。
在Medium级别,通过POST方式注入,需要借助工具如Burpsuite绕过防注入机制。使用HEX编码绕过mysql_real_escape_string函数,成功获取字段名和密码。
在High级别,页面结构复杂,但通过分析源码和尝试注入,仍然能发现字符型注入,并进行类似低级别的线程池shutdown 源码操作。Impossible级别则采用PDO技术,几乎消除了SQL注入的可能性。
某商城最新CMS从0day审计到漏洞利用
吃个早餐,开始了新的一天。朋友分享了最新的商城CMS给我,我决定帮忙审计,并分享这次经历。
首先,我部署了网站源码并查看了前台和后台页面。接着,使用工具进行了初步审计。我了解到,尽管多入口CMS有时工具难以发现漏洞,工具仍能提供半辅助作用。
我分析了item.php中拼接参数的部分,使用Sublime Text3打开进行研究。在SQL语句中,发现id值直接拼接,随后分析了Req()、Qry()、Qra()函数,发现它们没有过滤。
我进一步查看require引入的common.php文件,发现Qry和Qrc函数为正常数据库操作,而Req函数只是一种接受参数的方式。但函数内有Rpl函数,它进行了字符串替换,替换了加号、空格等字符。
在SQL语句中,$n通过"."进行拼接,无需单引号或双引号闭合。我构造了payload进行注入尝试,发现可以成功绕过Rpl函数。
为了验证,我使用了SQLMAP工具并找到了一个空格替换为/**/的tamper。通过运行sqlmap构造参数,我成功找到了数据库test2中的xxx_admin表及其字段Nm和Np的内容。
最后,我总结了这次审计的经验,强调了使用过滤方法,如PDO预编译,来修复漏洞的重要性。文章源于微信公众号(米瑞尔信息安全),由作者啊giao撰写。
第篇:记一次Oracle注入漏洞提权的艰难过程
大家好,我是ABC_。我近期遇到了一个Oracle注入漏洞,是搜索型的盲注漏洞,只能通过折半法一个字符一个字符的猜解数据。经过判断,发现这是DBA权限的注入点。接下来,我将分享如何通过这个注入点获取操作系统的权限,并且分享了在技术研究过程中遇到的问题和解决方法。
在解决这个问题时,我进行了两方面的优化来加快SQL注入的速度。首先,我在search=%语句中加入了存在结果很少的搜索值,比如将search=%,只显示出一条搜索结果,这样可以减少数据库的检索量和HTTP返回的数据包大小,从而加快SQL注入的速度。其次,我修改了SQLmap的默认个线程限制,这需要修改SQLmap的源码,这里就不详细解释了。
在Oracle注入提权的语句方面,我注意到很多文章给出的语句通常分为三个步骤,其中第二步就是赋予当前Oracle账号相关的JAVA权限。然而,这个语句包含了大量的单引号和左右尖括号,有时候会被转义掉导致注入失败,而且这个语句异常复杂,容易出错。因此,我使用了一个简单的语句替代,效果更佳。这个语句的格式是BEGIN开头,然后end;结尾,代表一个PL/SQL语句块,如下所示:select dbms_xmlquery.newcontext('declare PRAGMA AUTONOMOUS_TRANSACTION; BEGIN EXECUTE IMMEDIATE ''grant javasyspriv to test''; end;') from dual。
我使用了SQLmap的--sql-shell命令将上述语句执行,但是最后执行的命令没有成功。在处理这种情况时,我通常有两种可能:一是执行命令被拦截,二是Java代码没有执行成功。因此,我使用了如下SQL语句进行判断,结果返回0,说明函数没有添加成功。经过一系列测试,我发现是SQLmap的SQL-shell下功能下,上述复杂的SQL语句根本没执行成功。
为了更方便地执行Oracle的复杂SQL语句,我将SQL注入语句进行了修改,通过and (插入SQL语句) is not null的方式,可以在左右括号中插入各种Oracle的SQL语句。然而,这种方法也遇到了WAF拦截的问题。为了解决这个问题,我使用了Oracle特有的编码方式,将SQL语句成功执行。再次执行查询LinuxUtil是否存在的SQL语句,发现返回count()不为0,说明Java代码成功添加执行。然而,LinuxUtil命令依然无法执行,我怀疑是Java权限没有添加成功。我执行了查询当前用户权限的语句,发现当前用户具有CONNECT、RESOURCE、JAVASYSPRIV权限,说明Java相关权限确实是添加成功了。然而,为什么还是无法调用LinuxUtil命令呢?我重新搭建了测试环境,使用Navicat执行Oracle提权语句后,发现报了权限错误。
在查阅大量国外文章后,我发现判断当前用户是否有Java权限,需要查询session_roles表。该表用于显示当前会话中的角色信息,必须session_roles中有JAVASYSPRIV权限才行。我尝试断开Oracle当前账号的连接,重新连接之后,session_roles表中就有相应权限了。然而,我们是在SQL注入点,无法断开重连,那么如何使Java权限立即生效呢?国外文章给出了几种方法,但执行后仍然无法解决问题。
在等待第二天后,惊奇地发现session_roles中存在JAVASYSPRIV角色了,我也不清楚原因,但此时可以通过select LinuxExecHanshu('whoami') from dual执行命令。然而,盲注过程太麻烦,我选择结合SQLmap的SQL-shell终端来盲注入,因为该SQL语句比较简短,SQLmap的SQL-shell模式猜解是完全无压力的。最终,我们成功获取了系统权限。
总结来说,这个dbms_xmlquery.newcontext函数在高版本的Oracle数据库中已经不能提权成功,甚至不能使用,需要使用其他方法进行提权。在本地搭建的Oracle环境中,大多数情况下可以直接提权成功,但极少数情况下需要断开重连,具体原因不明。如果文章中有错误,欢迎批评指正。后续,我将继续分享Oracle提权的其他方法,敬请期待。