皮皮网
皮皮网

【csmesh源码】【看趣视频源码】【好车主互助源码】sqlmap 源码分析

来源:p源码之家 发表时间:2024-12-24 10:13:59

1.第79篇:记一次Oracle注入漏洞提权的源码艰难过程
2.SQLMap 源码阅读
3.6款较流行的开源漏洞扫描工具推荐及特点分析
4.2023最新版超详细Sqlmap安装保姆级教程,SQL注入使用指南,分析收藏这一篇就够了
5.11种流行的源码渗透测试工具
6.13款Chrome渗透插件推荐

sqlmap 源码分析

第79篇:记一次Oracle注入漏洞提权的艰难过程

       大家好,我是分析ABC_。我近期遇到了一个Oracle注入漏洞,源码是分析csmesh源码搜索型的盲注漏洞,只能通过折半法一个字符一个字符的源码猜解数据。经过判断,分析发现这是源码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提权的其他方法,敬请期待。

SQLMap 源码阅读

       本文主要解析了SQLMap的源码阅读流程。首先,我们确认了SQLMap运行的流程图,这有助于我们深入理解源码。在开始SQLMap运行前,程序进行一系列初始化操作,包括环境设置、依赖加载、变量配置等。

       接下来,我们处理URL。通过cmdLineParser()从命令行获取参数,进而通过initOptions(cmdLineOptions)解析这些命令行参数。初始化函数中,通过loadBoundaries()、loadPayloads()、_loadQueries()加载payload,这些函数负责从XML文件中加载边界、payload和查询。在loadBoundaries()中,程序读取data/xml/boundaries.xml文件并解析其中的XML,将结果添加到conf对象的tests属性中。conf对象存储了目标的相关信息以及配置信息。

       在URL处理阶段,程序通过getCurrentThreadData()获取当前线程数据,并调用f(*args, **kwargs)进行处理。这里的逻辑位于/lib/controller/controller.py文件下,主要工作包括打印日志、赋值和添加HTTP Header等,最终到达parseTargetUrl()函数。在该函数中,程序进行URL的剖析与拆解,并将这些内容保存到conf对象的搜片助手源码对应属性中,以便后续使用。

       接着,SQLMap会生成注入检测的payload,核心代码位于controller.py文件的行。在setupTargetEnv()函数中,程序调用hashDBRetrieve()函数,根据参数KB_INJECTIONS检索payload。payload生成逻辑在第行,执行SQL语句并使用basePickle进行加密。最终,程序生成payload并进行探测,如果目标返回Connection refused,则返回False。

       在WAF检测部分,当URL处理完毕后,程序进行探测,判断目标是否存在WAF。如果存在WAF,则生成用于fuzz的payload,这个payload基于/sqlmapproject/sqlmap.git

       测试 sqlmap 是否正常工作,前提需要安装 Python 2:

       apt install python2

       cd 到 sqlmap 目录:

       cd sqlmap/

       运行 sqlmap 命令并查看帮助手册:

       ./sqlmap.py -h

       检测 SQL 注入:

       1. 手动判断是否存在漏洞。对动态网页进行安全审计,通过接受动态用户提供的 GET、POST、Cookie 参数值、User-Agent 请求头。构造 url1 和 url2,如果 url1 访问结果与原始网页一致,url2 不一致,表示存在 SQL 注入。

       2. 使用 sqlmap 自动检测漏洞。检测语法为:sqlmap.py -u 目标 url。

       3. 寻找 SQL 注入实例,通过百度搜索特定字符串并测试 URL。

       进行数据库操作:

       列数据库信息:--dbs

       获取当前使用的数据库:--current-db

       获取当前用户:--current-user

       列出 SQL Server 所有用户:--users

       列出数据库账户与密码:--passwords

       指定数据库列出所有表:-D 数据库名 --tables

       指定数据库表列出所有字段:-D 数据库名 -T 表名 --columns

       导出指定字段的数据:-D 数据库名 -T 表名 -C 字段名 --dump

       指定范围导出数据:-D 数据库名 -T 表名 -C 字段名 --start 行数 --stop 行数 --dump

       SQLMAP 实用技巧:

       绕过 WAF 注入:修改 sqlmap 源代码文件,使用特定的绕过方法。

       URL 重写测试:使用特殊字符进行注入测试。

       列举并破解密码哈希:sqlmap 列举用户并尝试破解密码。

       获取数据个数:使用 --count 参数。

       网站漏洞爬取:使用 --batch --crawl 参数。

       预估时间注入:使用 --eta 参数。

       使用 hex 避免编码问题:使用 --hex 参数。

       模拟手机环境:使用 --mobile 参数。

       智能判断测试:使用 --batch --smart 参数。

       结合 burpsuite 使用:使用 -r 参数读取抓包文件。

       自动填写表单注入:自动化表单填写功能。

       读取文件:使用 --file 参数读取特定文件。

       延时注入:使用 --technique 参数。

       结合 burpsuite 进行 post 注入:通过配置 burpsuite 代理拦截请求。

       cookies 注入:通过 --cookies 参数进行 cookies 注入。

       MySQL 提权:连接数据库后,利用 sqlmap 上传特定插件。

       执行命令:特定权限下可执行命令。

       通过以上步骤和技巧,可以全面掌握 sqlmap 的使用方法,有效进行 SQL 注入测试和数据库操作。

种流行的渗透测试工具

       您是否在寻找最适合您Web应用程序和网络安全需求的渗透测试工具?您是否想要比较和分析不同的渗透测试工具,以确定最适合您企业的工具?或者,您只是想了解有哪些工具以及它们的功能?如果是这样,那么这个博客已经为您提供了所需的信息。

       无论是为了遵守法规、进行安全性评估,还是为了增强IT环境对网络安全威胁的防御能力,选择正确的工具组合都至关重要。如果渗透测试人员无法使用正确的工具,那么可能无法检测到一些关键的漏洞,这可能导致错误的安保感。

       以下是种流行的渗透测试工具,它们非常适合检测漏洞并准确模拟网络攻击。接下来,我们将探讨它们的功能和兼容的平台。

       1. Burp Suite Pro

       这是最流行、功能强大和先进的渗透测试工具之一,可以帮助渗透测试人员修复和利用漏洞,并确定其目标的细微盲点。它是一个包含多种高级工具的套件,非常适合Web应用程序的渗透测试。

       2. SQLmap

       这是一个功能强大的开放源代码渗透测试工具,可以帮助渗透测试人员识别和利用影响不同数据库的SQL注入漏洞。

       3. Aircrack-ng

       这是一个网络安全渗透测试工具,带有一系列实用程序,可以评估Wi-Fi网络是否存在漏洞。

       4. Wireshark

       这是必备的网络协议分析器,广泛用于捕获实时网络流量以进行网络故障排除。

       5. Nmap

       这是最好的和渗透测试人员最喜欢的开源渗透测试工具之一,可以帮助识别网络中的开放端口和漏洞。

       6. Metasploit

       这是一个渗透测试框架,被网络攻击者和道德黑客广泛使用。

       7. Hashcat

       这是黑客和道德黑客社区使用的一种流行的开源密码破解工具。

       8. WPScan

       这是一款开源WordPress安全扫描程序,可以帮助扫描WordPress核心、插件和主题中的已知漏洞。

       9. Nessus

       这是一个功能强大且广受欢迎的网络漏洞扫描程序。

       . MobSF

       这是一个全面的、多合一的框架,用于渗透测试、恶意软件分析和不同平台上的移动应用程序的安全评估。

       . John the Ripper

       这是一个密码破解和恢复工具,可以帮助您找到系统上的弱密码并公开它们。

款Chrome渗透插件推荐

       在进行网络渗透测试时,选择合适的扩展插件能够极大提升效率和精确度。以下是款推荐的Chrome扩展插件,这些插件均可在Google Chrome的网上商店免费下载与安装。

       1. Nikto: 该插件能够扫描网站安全漏洞,对于渗透测试人员来说,是一款必备工具。

       2. W3AF: 通过此插件,可以对目标网站进行深入漏洞挖掘,提高测试效果。

       3. SQLmap: 专注于SQL注入攻击检测与利用,能够有效识别并处理数据库安全漏洞。

       4. Burp Suite: 一款全面的渗透测试工具,包括代理服务器、抓包分析和攻击功能。

       5. OWASP ZAP: 由开放源代码社区提供的免费工具,用于发现和测试Web应用程序的安全性。

       6. WebInspect: 深度扫描和评估网站安全性,支持多种扫描策略和报告格式。

       7. Acunetix: 通过全面的Web应用漏洞扫描,提供详细的漏洞报告和修复建议。

       8. Qualys SSL Labs: 专门针对SSL/TLS协议安全性的测试,有助于评估网站安全性。

       9. SSL Checker: 用于检测网站SSL证书的状态和有效性,确保安全通信。

       . XSS-Attacker: 专为检测跨站脚本攻击设计,通过插件可快速识别潜在漏洞。

       . Web Vulnerability Scanner: 对网站进行全面的安全扫描,发现并报告漏洞。

       . HTML Tidy: 清理和修复HTML代码,确保网站内容正常显示。

       . Browser Extension Debugger: 用于调试浏览器扩展,解决兼容性和性能问题。

       以上插件各有特色,适应不同的渗透测试场景和需求。在实际操作中,根据具体任务选择合适的工具,能够显著提高测试效率与质量。

DVWA实战篇分钟学会 SQL 注入攻击实战

       SQL注入是一种通过操纵Web应用的查询语句来执行恶意SQL命令的攻击手段。它利用应用程序中安全漏洞,能获取或修改数据库内容。SQL注入主要分为普通注入和盲注,前者通过页面显示数据逐步获取信息,后者则需猜测SQL语句的正确性。类型上,根据注入数据类型,分为数字型和字符型;提交参数方式有GET和POST等。

       在低级别SQL注入实战中,通过手工注入发现DVWA网站存在漏洞。首先,在安全级别为Low的页面中,通过GET方式注入,观察报错信息判断数据库类型,然后逐步利用'字符和#符号进行测试,确定字符型注入,进一步通过联合查询获取表名、字段名和敏感信息。自动化工具SQLMap可以协助探测数据库和表信息,甚至解密密码。

       在Medium级别,通过POST方式注入,需要借助工具如Burpsuite绕过防注入机制。使用HEX编码绕过mysql_real_escape_string函数,成功获取字段名和密码。

       在High级别,页面结构复杂,但通过分析源码和尝试注入,仍然能发现字符型注入,并进行类似低级别的操作。Impossible级别则采用PDO技术,几乎消除了SQL注入的可能性。

web安全要学什么

       å­¦ä¹ Web安全需要掌握Web安全相关概念、渗透测试相关工具、渗透实战操作、熟悉Windows/Kali Linux、中间件和服务器的安全配置、脚本编程学习、源码审计与漏洞分析、安全体系设计与开发等等。

       ç®€å•åšä¸€ä¸ªå­¦ä¹ è§„划:

第一步:Web安全相关概念

       å»ºè®®å­¦ä¹ æ—¶é—´ï¼š2周

       å­¦ä¹ å†…容如下:

       1、熟悉基本概念(SQL注入、上传、XSS、CSRF、一句话木马等)。

       2、通过关键字(SQL注入、上传、XSS、CSRF、一句话木马等)进行Google。

       3、阅读《Web安全深度剖析》,作为入门学习还是可以的。

       4、看一些渗透笔记/视频,了解渗透实战的整个过程,可以Google(渗透笔记、渗透过程、入侵过程等)。

第二步:熟悉渗透相关工具

       å»ºè®®å­¦ä¹ æ—¶é—´ï¼š3周

       å­¦ä¹ å†…容如下:

       1、熟悉AWVS、Sqlmap、Burpsuite、Nessus、China chopper 、Nmap、Appscan等相关工具的使用。

       2、了解该类工具的用途和使用场景。

       3、下载无后门版的这些软件进行安装。

       4、学习并进行使用,具体教材可以在网上搜索,例如:Burpsuite的教程、Sqlmap。

       5、常用的这几个软件都学会后,可以安装音速启动做一个渗透工具箱

第三步:渗透实战操作

       å»ºè®®å­¦ä¹ æ—¶é—´ï¼š5周

       å­¦ä¹ å†…容如下:

       1、掌握渗透的整个阶段并能够独立渗透小型站点。

       2、网上找渗透视频看并思考其中的思路和原理,关键字(渗透、SQL注入视频、文件上传入侵、数据库备份、Dedecms漏洞利用等等)。

       3、自己找站点/搭建测试环境进行测试,记住请隐藏好你自己。

       4、思考渗透主要分为几个阶段,每个阶段需要做哪些工作,例如这个:PTES渗透测试执行标准。

       5、研究SQL注入的种类、注入原理、手动注入技巧。

       6、研究文件上传的原理,如何进行截断、解析漏洞利用等,参照:上传攻击框架。

       7、研究XSS形成的原理和种类,具体学习方法可以Google。

       8、研究Windows/Linux提权的方法和具体使用,可以参考:提权。

       9、可以参考: 开源渗透测试脆弱系统。

第四步:关注安全圈动态

       å»ºè®®å­¦ä¹ æ—¶é—´ï¼š1周

       å­¦ä¹ å†…容如下:

       1、关注安全圈的最新漏洞、安全事件与技术文章。

       2、浏览每日的安全技术文章/事件。

       3、通过微博、微信关注安全圈的从业人员(遇到大牛的关注或者好友果断关注),天天抽时间刷一下。

       4、通过feedly/鲜果订阅国内外安全技术博客(不要仅限于国内,平时多注意积累)。

       5、养成习惯,每天主动提交安全技术文章链接到i春秋社区进行积淀。

       6、多关注下最新漏洞列表,可以看看hackerone、freebuf、安全客等,遇到公开的漏洞都去实践下。

       7、关注国内国际上的安全会议的议题或者录像。

       8、加入技术交流群,与群内大佬们讨教一些经验和技巧。

第五步:熟悉Windows/Kali Linux

       å»ºè®®å­¦ä¹ æ—¶é—´ï¼š3周

       å­¦ä¹ å†…容如下:

       1、学习Windows/Kali Linux基本命令、常用工具。

       2、熟悉Windows下的常用的cmd命令,例如:ipconfig,nslookup,tracert,net,tasklist,taskkill等。

       3、熟悉Linux下的常用命令,例如:ifconfig,ls,cp,mv,vi,wget,service,sudo等。

       4、熟悉Kali Linux系统下的常用工具,可以参考《Web Penetration Testing with Kali Linux》、《Hacking with Kali》等。

       5、熟悉metasploit工具,可以参考《Metasploit渗透测试指南》。

第六步:中间件和服务器的安全配置

       å»ºè®®å­¦ä¹ æ—¶é—´ï¼š3周

       å­¦ä¹ å†…容如下:

       1、学习服务器环境配置,并能通过思考发现配置存在的安全问题。

       2、Windows server环境下的IIS配置,特别注意配置安全和运行权限。

       3、Linux环境下的LAMP的安全配置,主要考虑运行权限、跨目录、文件夹权限等。

       4、远程系统加固,限制用户名和口令登陆,通过iptables限制端口;配置软件Waf加强系统安全,在服务器配置mod_security等系统。

       5、通过Nessus软件对配置环境进行安全检测,发现未知安全威胁。

第七步:脚本编程学习

       å»ºè®®å­¦ä¹ æ—¶é—´ï¼š4周

       å­¦ä¹ å†…容如下:

       1、选择脚本语言:Perl/Python/PHP/Go/Java中的一种,对常用库进行编程学习。

       2、搭建开发环境和选择IDE,PHP环境推荐Wamp和XAMPP,IDE强烈推荐Sublime。

       3、Python编程学习,学习内容包含:语法、正则、文件、网络、多线程等常用库,推荐《Python核心编程》。

       4、用Python编写漏洞的exp,然后写一个简单的网络爬虫。

       5、PHP基本语法学习并书写一个简单的博客系统,参见《PHP与MySQL程序设计(第4版)》、视频。

       6、熟悉MVC架构,并试着学习一个PHP框架或者Python框架(可选)。

       7、了解Bootstrap的布局或者CSS。

第八步:源码审计与漏洞分析

       å»ºè®®å­¦ä¹ æ—¶é—´ï¼š3周

       å­¦ä¹ å†…容如下:

       1、能独立分析脚本源码程序并发现安全问题。

       2、熟悉源码审计的动态和静态方法,并知道如何去分析程序。

       3、了解Web漏洞的形成原因,然后通过关键字进行查找分析。

       4、研究Web漏洞形成原理和如何从源码层面避免该类漏洞,并整理成checklist。

       å­¦ä¹ åœ°å€ï¼ši春秋官网(企安殿)

第九步:安全体系设计与开发

       å»ºè®®å­¦ä¹ æ—¶é—´ï¼š5周

       å­¦ä¹ å†…容如下:

       1、能建立自己的安全体系,并能提出一些安全建议或者系统架构。

       2、开发一些实用的安全小工具并开源,体现个人实力。

       3、建立自己的安全体系,对公司安全有自己的一些认识和见解。

       4、提出或者加入大型安全系统的架构或者开发。

某商城最新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撰写。

相关栏目:知识