【发布时间】:2020-01-16 09:55:56
【问题描述】:
我正在尝试了解 HQL 注入的工作原理,但我需要帮助。 我使用以下 json 向服务器发送 HTTP POST 请求:
{
"status":"COMMUNICATION",
"planning": {
"from": "01-20-2013",
"to": "11-12-2015"
}
}
我知道可以在 "status" 参数的末尾注入欺诈性请求,因为当我用一个简单的引号(例如:"status":"COMMUNICATION'")结束时,服务器会返回一个请求出现休眠错误:
{
"exception": "org.springframework.dao.InvalidDataAccessApiUsageException",
"error": "Internal Server Error",
"message": "org.hibernate.QueryException: expecting ''', found '<EOF>' [SELECT com FROM com.company.CorRequest as com where com.corCommunicationId > 0 AND com.status = 'COMMUNICATION'' AND com.scheduledDate > to_timestamp('01-20-2013','MM-dd-yyyy HH24:MI') AND com.scheduledDate <= to_timestamp('11-12-2015','MM-dd-yyyy HH24:MI')]; nested exception is java.lang.IllegalArgumentException: org.hibernate.QueryException: expecting ''', found '<EOF>' [SELECT com FROM com as com where com.corCommunicationId > 0 AND com.status = 'COMMUNICATION'' AND com.scheduledDate > to_timestamp('01-20-2013','MM-dd-yyyy HH24:MI') AND com.scheduledDate <= to_timestamp('11-12-2015','MM-dd-yyyy HH24:MI')]",
"path": "/v1/comuni/",
"timestamp": 1579167902428,
"status": 500
}
当我注入"COMMUNICATION')--" 时,我得到了整个表,但我不能做任何其他事情,你有什么想法吗?
【问题讨论】:
-
您是否正在考虑如何在服务器端处理这个问题,或者如何防止客户端出现错误请求?
-
如何在服务器端处理这个问题,因为我想尝试使用数据库提取进行 POC。
-
我建议你看看这个:stackoverflow.com/questions/31314209/… - 你会在那里找到一个链接到software-security.sans.org/developer-how-to。虽然没有在该站点上处理 Postgres - 应该适用相同的原则。
-
我确实遇到过这些资源,但我无法脱离表的上下文,存在 SQLMAP 演示 (youtube.com/watch?v=6WeUxAmYgHQ) 但我不知道为什么它没有当我发动攻击时工作。
标签: json postgresql hql sql-injection