33 #include "../suricata-common.h"
34 #include "../suricata.h"
35 #include "../flow-util.h"
37 #include "../app-layer-parser.h"
38 #include "../util-unittest.h"
39 #include "../util-unittest-helper.h"
40 #include "../app-layer.h"
41 #include "../app-layer-htp.h"
42 #include "../app-layer-protos.h"
43 #include "../detect-isdataat.h"
44 #include "../detect-engine-build.h"
45 #include "../detect-engine-alert.h"
53 static int DetectEngineHttpCookieTest01(
void)
59 uint8_t http_buf[] =
"GET /index.html HTTP/1.0\r\n"
61 "Host: www.onetwothreefourfivesixseven.org\r\n\r\n";
62 uint32_t http_len =
sizeof(http_buf) - 1;
65 memset(&th_v, 0,
sizeof(th_v));
67 memset(&f, 0,
sizeof(f));
68 memset(&ssn, 0,
sizeof(ssn));
74 f.
proto = IPPROTO_TCP;
89 "(msg:\"http header test\"; "
90 "content:\"CONNECT\"; http_cookie; "
121 static int DetectEngineHttpCookieTest02(
void)
127 uint8_t http_buf[] =
"CONNECT /index.html HTTP/1.0\r\n"
128 "Cookie: CONNECT\r\n"
129 "Host: www.onetwothreefourfivesixseven.org\r\n\r\n";
130 uint32_t http_len =
sizeof(http_buf) - 1;
133 memset(&th_v, 0,
sizeof(th_v));
135 memset(&f, 0,
sizeof(f));
136 memset(&ssn, 0,
sizeof(ssn));
142 f.
proto = IPPROTO_TCP;
157 "(msg:\"http header test\"; "
158 "content:\"CO\"; depth:4; http_cookie; "
189 static int DetectEngineHttpCookieTest03(
void)
195 uint8_t http_buf[] =
"CONNECT /index.html HTTP/1.0\r\n"
196 "Cookie: CONNECT\r\n"
197 "Host: www.onetwothreefourfivesixseven.org\r\n\r\n";
198 uint32_t http_len =
sizeof(http_buf) - 1;
201 memset(&th_v, 0,
sizeof(th_v));
203 memset(&f, 0,
sizeof(f));
204 memset(&ssn, 0,
sizeof(ssn));
210 f.
proto = IPPROTO_TCP;
225 "(msg:\"http header test\"; "
226 "content:!\"ECT\"; depth:4; http_cookie; "
257 static int DetectEngineHttpCookieTest04(
void)
263 uint8_t http_buf[] =
"CONNECT /index.html HTTP/1.0\r\n"
264 "Cookie: CONNECT\r\n"
265 "Host: www.onetwothreefourfivesixseven.org\r\n\r\n";
266 uint32_t http_len =
sizeof(http_buf) - 1;
269 memset(&th_v, 0,
sizeof(th_v));
271 memset(&f, 0,
sizeof(f));
272 memset(&ssn, 0,
sizeof(ssn));
278 f.
proto = IPPROTO_TCP;
293 "(msg:\"http header test\"; "
294 "content:\"ECT\"; depth:4; http_cookie; "
325 static int DetectEngineHttpCookieTest05(
void)
331 uint8_t http_buf[] =
"CONNECT /index.html HTTP/1.0\r\n"
332 "Cookie: CONNECT\r\n"
333 "Host: www.onetwothreefourfivesixseven.org\r\n\r\n";
334 uint32_t http_len =
sizeof(http_buf) - 1;
337 memset(&th_v, 0,
sizeof(th_v));
339 memset(&f, 0,
sizeof(f));
340 memset(&ssn, 0,
sizeof(ssn));
346 f.
proto = IPPROTO_TCP;
361 "(msg:\"http header test\"; "
362 "content:!\"CON\"; depth:4; http_cookie; "
393 static int DetectEngineHttpCookieTest06(
void)
399 uint8_t http_buf[] =
"CONNECT /index.html HTTP/1.0\r\n"
400 "Cookie: CONNECT\r\n"
401 "Host: www.onetwothreefourfivesixseven.org\r\n\r\n";
402 uint32_t http_len =
sizeof(http_buf) - 1;
405 memset(&th_v, 0,
sizeof(th_v));
407 memset(&f, 0,
sizeof(f));
408 memset(&ssn, 0,
sizeof(ssn));
414 f.
proto = IPPROTO_TCP;
429 "(msg:\"http header test\"; "
430 "content:\"ECT\"; offset:3; http_cookie; "
461 static int DetectEngineHttpCookieTest07(
void)
467 uint8_t http_buf[] =
"CONNECT /index.html HTTP/1.0\r\n"
468 "Cookie: CONNECT\r\n"
469 "Host: www.onetwothreefourfivesixseven.org\r\n\r\n";
470 uint32_t http_len =
sizeof(http_buf) - 1;
473 memset(&th_v, 0,
sizeof(th_v));
475 memset(&f, 0,
sizeof(f));
476 memset(&ssn, 0,
sizeof(ssn));
482 f.
proto = IPPROTO_TCP;
497 "(msg:\"http header test\"; "
498 "content:!\"CO\"; offset:3; http_cookie; "
529 static int DetectEngineHttpCookieTest08(
void)
535 uint8_t http_buf[] =
"CONNECT /index.html HTTP/1.0\r\n"
536 "Cookie: CONNECT\r\n"
537 "Host: www.onetwothreefourfivesixseven.org\r\n\r\n";
538 uint32_t http_len =
sizeof(http_buf) - 1;
541 memset(&th_v, 0,
sizeof(th_v));
543 memset(&f, 0,
sizeof(f));
544 memset(&ssn, 0,
sizeof(ssn));
550 f.
proto = IPPROTO_TCP;
565 "(msg:\"http header test\"; "
566 "content:!\"ECT\"; offset:3; http_cookie; "
597 static int DetectEngineHttpCookieTest09(
void)
603 uint8_t http_buf[] =
"CONNECT /index.html HTTP/1.0\r\n"
604 "Cookie: CONNECT\r\n"
605 "Host: www.onetwothreefourfivesixseven.org\r\n\r\n";
606 uint32_t http_len =
sizeof(http_buf) - 1;
609 memset(&th_v, 0,
sizeof(th_v));
611 memset(&f, 0,
sizeof(f));
612 memset(&ssn, 0,
sizeof(ssn));
618 f.
proto = IPPROTO_TCP;
633 "(msg:\"http header test\"; "
634 "content:\"CON\"; offset:3; http_cookie; "
665 static int DetectEngineHttpCookieTest10(
void)
671 uint8_t http_buf[] =
"CONNECT /index.html HTTP/1.0\r\n"
672 "Cookie: CONNECT\r\n"
673 "Host: www.onetwothreefourfivesixseven.org\r\n\r\n";
674 uint32_t http_len =
sizeof(http_buf) - 1;
677 memset(&th_v, 0,
sizeof(th_v));
679 memset(&f, 0,
sizeof(f));
680 memset(&ssn, 0,
sizeof(ssn));
686 f.
proto = IPPROTO_TCP;
701 "(msg:\"http header test\"; "
702 "content:\"CO\"; http_cookie; "
703 "content:\"EC\"; within:4; http_cookie; "
734 static int DetectEngineHttpCookieTest11(
void)
740 uint8_t http_buf[] =
"CONNECT /index.html HTTP/1.0\r\n"
741 "Cookie: CONNECT\r\n"
742 "Host: www.onetwothreefourfivesixseven.org\r\n\r\n";
743 uint32_t http_len =
sizeof(http_buf) - 1;
746 memset(&th_v, 0,
sizeof(th_v));
748 memset(&f, 0,
sizeof(f));
749 memset(&ssn, 0,
sizeof(ssn));
755 f.
proto = IPPROTO_TCP;
770 "(msg:\"http header test\"; "
771 "content:\"CO\"; http_cookie; "
772 "content:!\"EC\"; within:3; http_cookie; "
803 static int DetectEngineHttpCookieTest12(
void)
809 uint8_t http_buf[] =
"CONNECT /index.html HTTP/1.0\r\n"
810 "Cookie: CONNECT\r\n"
811 "Host: www.onetwothreefourfivesixseven.org\r\n\r\n";
812 uint32_t http_len =
sizeof(http_buf) - 1;
815 memset(&th_v, 0,
sizeof(th_v));
817 memset(&f, 0,
sizeof(f));
818 memset(&ssn, 0,
sizeof(ssn));
824 f.
proto = IPPROTO_TCP;
839 "(msg:\"http header test\"; "
840 "content:\"CO\"; http_cookie; "
841 "content:\"EC\"; within:3; http_cookie; "
872 static int DetectEngineHttpCookieTest13(
void)
878 uint8_t http_buf[] =
"CONNECT /index.html HTTP/1.0\r\n"
879 "Cookie: CONNECT\r\n"
880 "Host: www.onetwothreefourfivesixseven.org\r\n\r\n";
881 uint32_t http_len =
sizeof(http_buf) - 1;
884 memset(&th_v, 0,
sizeof(th_v));
886 memset(&f, 0,
sizeof(f));
887 memset(&ssn, 0,
sizeof(ssn));
893 f.
proto = IPPROTO_TCP;
908 "(msg:\"http header test\"; "
909 "content:\"CO\"; http_cookie; "
910 "content:!\"EC\"; within:4; http_cookie; "
941 static int DetectEngineHttpCookieTest14(
void)
947 uint8_t http_buf[] =
"CONNECT /index.html HTTP/1.0\r\n"
948 "Cookie: CONNECT\r\n"
949 "Host: www.onetwothreefourfivesixseven.org\r\n\r\n";
950 uint32_t http_len =
sizeof(http_buf) - 1;
953 memset(&th_v, 0,
sizeof(th_v));
955 memset(&f, 0,
sizeof(f));
956 memset(&ssn, 0,
sizeof(ssn));
962 f.
proto = IPPROTO_TCP;
977 "(msg:\"http header test\"; "
978 "content:\"CO\"; http_cookie; "
979 "content:\"EC\"; distance:2; http_cookie; "
1010 static int DetectEngineHttpCookieTest15(
void)
1016 uint8_t http_buf[] =
"CONNECT /index.html HTTP/1.0\r\n"
1017 "Cookie: CONNECT\r\n"
1018 "Host: www.onetwothreefourfivesixseven.org\r\n\r\n";
1019 uint32_t http_len =
sizeof(http_buf) - 1;
1022 memset(&th_v, 0,
sizeof(th_v));
1024 memset(&f, 0,
sizeof(f));
1025 memset(&ssn, 0,
sizeof(ssn));
1031 f.
proto = IPPROTO_TCP;
1046 "(msg:\"http header test\"; "
1047 "content:\"CO\"; http_cookie; "
1048 "content:!\"EC\"; distance:3; http_cookie; "
1079 static int DetectEngineHttpCookieTest16(
void)
1085 uint8_t http_buf[] =
"CONNECT /index.html HTTP/1.0\r\n"
1086 "Cookie: CONNECT\r\n"
1087 "Host: www.onetwothreefourfivesixseven.org\r\n\r\n";
1088 uint32_t http_len =
sizeof(http_buf) - 1;
1091 memset(&th_v, 0,
sizeof(th_v));
1093 memset(&f, 0,
sizeof(f));
1094 memset(&ssn, 0,
sizeof(ssn));
1100 f.
proto = IPPROTO_TCP;
1115 "(msg:\"http header test\"; "
1116 "content:\"CO\"; http_cookie; "
1117 "content:\"EC\"; distance:3; http_cookie; "
1148 static int DetectEngineHttpCookieTest17(
void)
1154 uint8_t http_buf[] =
"CONNECT /index.html HTTP/1.0\r\n"
1155 "Cookie: CONNECT\r\n"
1156 "Host: www.onetwothreefourfivesixseven.org\r\n\r\n";
1157 uint32_t http_len =
sizeof(http_buf) - 1;
1160 memset(&th_v, 0,
sizeof(th_v));
1162 memset(&f, 0,
sizeof(f));
1163 memset(&ssn, 0,
sizeof(ssn));
1169 f.
proto = IPPROTO_TCP;
1184 "(msg:\"http header test\"; "
1185 "content:\"CO\"; http_cookie; "
1186 "content:!\"EC\"; distance:2; http_cookie; "
1217 static int DetectHttpCookieTest01(
void)
1224 "(msg:\"Testing http_cookie\"; http_cookie;sid:1;)");
1234 static int DetectHttpCookieTest02(
void)
1240 "(msg:\"Testing http_cookie\"; content:\"me\"; "
1241 "http_cookie:woo; sid:1;)");
1248 static int DetectHttpCookieSigTest01(
void)
1251 uint8_t httpbuf1[] =
"POST / HTTP/1.0\r\nUser-Agent: Mozilla/1.0\r\nCookie:"
1252 " hellocatchme\r\n\r\n";
1253 uint32_t httplen1 =
sizeof(httpbuf1) - 1;
1259 memset(&th_v, 0,
sizeof(th_v));
1261 memset(&f, 0,
sizeof(f));
1262 memset(&ssn, 0,
sizeof(ssn));
1268 f.
proto = IPPROTO_TCP;
1284 "\"HTTP cookie\"; content:\"me\"; "
1285 "http_cookie; sid:1;)");
1289 "cookie\"; content:\"go\"; http_cookie; sid:2;)");
1317 static int DetectHttpCookieSigTest02(
void)
1320 uint8_t httpbuf1[] =
"POST / HTTP/1.0\r\nUser-Agent: Mozilla/1.0\r\n\r\n";
1321 uint32_t httplen1 =
sizeof(httpbuf1) - 1;
1327 memset(&th_v, 0,
sizeof(th_v));
1329 memset(&f, 0,
sizeof(f));
1330 memset(&ssn, 0,
sizeof(ssn));
1336 f.
proto = IPPROTO_TCP;
1352 "\"HTTP cookie\"; content:\"me\"; "
1353 "http_cookie; sid:1;)");
1380 static int DetectHttpCookieSigTest03(
void)
1383 uint8_t httpbuf1[] =
"POST / HTTP/1.0\r\nUser-Agent: Mozilla/1.0\r\n"
1384 "Cookie: dummy\r\n\r\n";
1385 uint32_t httplen1 =
sizeof(httpbuf1) - 1;
1391 memset(&th_v, 0,
sizeof(th_v));
1393 memset(&f, 0,
sizeof(f));
1394 memset(&ssn, 0,
sizeof(ssn));
1400 f.
proto = IPPROTO_TCP;
1416 "\"HTTP cookie\"; content:\"boo\"; "
1417 "http_cookie; sid:1;)");
1444 static int DetectHttpCookieSigTest04(
void)
1447 uint8_t httpbuf1[] =
"POST / HTTP/1.0\r\nUser-Agent: Mozilla/1.0\r\n"
1448 "Cookie: dummy\r\n\r\n";
1449 uint32_t httplen1 =
sizeof(httpbuf1) - 1;
1455 memset(&th_v, 0,
sizeof(th_v));
1457 memset(&f, 0,
sizeof(f));
1458 memset(&ssn, 0,
sizeof(ssn));
1464 f.
proto = IPPROTO_TCP;
1480 "\"HTTP cookie\"; content:!\"boo\"; "
1481 "http_cookie; sid:1;)");
1508 static int DetectHttpCookieSigTest05(
void)
1511 uint8_t httpbuf1[] =
"POST / HTTP/1.0\r\nUser-Agent: Mozilla/1.0\r\n"
1512 "Cookie: DuMmY\r\n\r\n";
1513 uint32_t httplen1 =
sizeof(httpbuf1) - 1;
1519 memset(&th_v, 0,
sizeof(th_v));
1521 memset(&f, 0,
sizeof(f));
1522 memset(&ssn, 0,
sizeof(ssn));
1528 f.
proto = IPPROTO_TCP;
1544 "\"HTTP cookie\"; content:\"dummy\"; nocase; "
1545 "http_cookie; sid:1;)");
1572 static int DetectHttpCookieSigTest06(
void)
1575 uint8_t httpbuf1[] =
"POST / HTTP/1.0\r\nUser-Agent: Mozilla/1.0\r\n"
1576 "Cookie: DuMmY\r\n\r\n";
1577 uint32_t httplen1 =
sizeof(httpbuf1) - 1;
1583 memset(&th_v, 0,
sizeof(th_v));
1585 memset(&f, 0,
sizeof(f));
1586 memset(&ssn, 0,
sizeof(ssn));
1592 f.
proto = IPPROTO_TCP;
1608 "\"HTTP cookie\"; content:\"dummy\"; "
1609 "http_cookie; nocase; sid:1;)");
1636 static int DetectHttpCookieSigTest07(
void)
1639 uint8_t httpbuf1[] =
"POST / HTTP/1.0\r\nUser-Agent: Mozilla/1.0\r\n"
1640 "Cookie: dummy\r\n\r\n";
1641 uint32_t httplen1 =
sizeof(httpbuf1) - 1;
1647 memset(&th_v, 0,
sizeof(th_v));
1649 memset(&f, 0,
sizeof(f));
1650 memset(&ssn, 0,
sizeof(ssn));
1656 f.
proto = IPPROTO_TCP;
1672 "\"HTTP cookie\"; content:!\"dummy\"; "
1673 "http_cookie; sid:1;)");
1702 static int DetectHttpCookieSigTest08(
void)
1704 uint8_t httpbuf_request[] =
"GET / HTTP/1.1\r\n"
1705 "User-Agent: Mozilla/1.0\r\n"
1707 uint32_t httpbuf_request_len =
sizeof(httpbuf_request) - 1;
1709 uint8_t httpbuf_response[] =
"HTTP/1.1 200 OK\r\n"
1710 "Set-Cookie: response_user_agent\r\n"
1712 uint32_t httpbuf_response_len =
sizeof(httpbuf_response) - 1;
1720 memset(&th_v, 0,
sizeof(th_v));
1722 memset(&f, 0,
sizeof(f));
1723 memset(&ssn, 0,
sizeof(ssn));
1727 f.
proto = IPPROTO_TCP;
1751 "(flow:to_client; content:\"response_user_agent\"; "
1752 "http_cookie; sid:1;)");
1760 httpbuf_request_len);
1772 httpbuf_response_len);
1794 static int DetectHttpCookieSigTest09(
void)
1796 uint8_t httpbuf_request[] =
"GET / HTTP/1.1\r\n"
1797 "Cookie: request_user_agent\r\n"
1798 "User-Agent: Mozilla/1.0\r\n"
1800 uint32_t httpbuf_request_len =
sizeof(httpbuf_request) - 1;
1802 uint8_t httpbuf_response[] =
"HTTP/1.1 200 OK\r\n"
1803 "Set-Cookie: response_user_agent\r\n"
1805 uint32_t httpbuf_response_len =
sizeof(httpbuf_response) - 1;
1812 memset(&th_v, 0,
sizeof(th_v));
1814 memset(&f, 0,
sizeof(f));
1815 memset(&ssn, 0,
sizeof(ssn));
1819 f.
proto = IPPROTO_TCP;
1842 "(flow:to_server; content:\"request_user_agent\"; "
1843 "http_cookie; sid:1;)");
1846 "(flow:to_client; content:\"response_user_agent\"; "
1847 "http_cookie; sid:2;)");
1855 httpbuf_request_len);
1867 httpbuf_response_len);
1890 UtRegisterTest(
"DetectHttpCookieTest01", DetectHttpCookieTest01);
1891 UtRegisterTest(
"DetectHttpCookieTest02", DetectHttpCookieTest02);
1892 UtRegisterTest(
"DetectHttpCookieSigTest01", DetectHttpCookieSigTest01);
1893 UtRegisterTest(
"DetectHttpCookieSigTest02", DetectHttpCookieSigTest02);
1894 UtRegisterTest(
"DetectHttpCookieSigTest03", DetectHttpCookieSigTest03);
1895 UtRegisterTest(
"DetectHttpCookieSigTest04", DetectHttpCookieSigTest04);
1896 UtRegisterTest(
"DetectHttpCookieSigTest05", DetectHttpCookieSigTest05);
1897 UtRegisterTest(
"DetectHttpCookieSigTest06", DetectHttpCookieSigTest06);
1898 UtRegisterTest(
"DetectHttpCookieSigTest07", DetectHttpCookieSigTest07);
1899 UtRegisterTest(
"DetectHttpCookieSigTest08", DetectHttpCookieSigTest08);
1900 UtRegisterTest(
"DetectHttpCookieSigTest09", DetectHttpCookieSigTest09);
1901 UtRegisterTest(
"DetectEngineHttpCookieTest01", DetectEngineHttpCookieTest01);
1902 UtRegisterTest(
"DetectEngineHttpCookieTest02", DetectEngineHttpCookieTest02);
1903 UtRegisterTest(
"DetectEngineHttpCookieTest03", DetectEngineHttpCookieTest03);
1904 UtRegisterTest(
"DetectEngineHttpCookieTest04", DetectEngineHttpCookieTest04);
1905 UtRegisterTest(
"DetectEngineHttpCookieTest05", DetectEngineHttpCookieTest05);
1906 UtRegisterTest(
"DetectEngineHttpCookieTest06", DetectEngineHttpCookieTest06);
1907 UtRegisterTest(
"DetectEngineHttpCookieTest07", DetectEngineHttpCookieTest07);
1908 UtRegisterTest(
"DetectEngineHttpCookieTest08", DetectEngineHttpCookieTest08);
1909 UtRegisterTest(
"DetectEngineHttpCookieTest09", DetectEngineHttpCookieTest09);
1910 UtRegisterTest(
"DetectEngineHttpCookieTest10", DetectEngineHttpCookieTest10);
1911 UtRegisterTest(
"DetectEngineHttpCookieTest11", DetectEngineHttpCookieTest11);
1912 UtRegisterTest(
"DetectEngineHttpCookieTest12", DetectEngineHttpCookieTest12);
1913 UtRegisterTest(
"DetectEngineHttpCookieTest13", DetectEngineHttpCookieTest13);
1914 UtRegisterTest(
"DetectEngineHttpCookieTest14", DetectEngineHttpCookieTest14);
1915 UtRegisterTest(
"DetectEngineHttpCookieTest15", DetectEngineHttpCookieTest15);
1916 UtRegisterTest(
"DetectEngineHttpCookieTest16", DetectEngineHttpCookieTest16);
1917 UtRegisterTest(
"DetectEngineHttpCookieTest17", DetectEngineHttpCookieTest17);