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));
66 memset(&f, 0,
sizeof(f));
67 memset(&ssn, 0,
sizeof(ssn));
73 f.
proto = IPPROTO_TCP;
88 "(msg:\"http header test\"; "
89 "content:\"CONNECT\"; http_cookie; "
120 static int DetectEngineHttpCookieTest02(
void)
126 uint8_t http_buf[] =
"CONNECT /index.html HTTP/1.0\r\n"
127 "Cookie: CONNECT\r\n"
128 "Host: www.onetwothreefourfivesixseven.org\r\n\r\n";
129 uint32_t http_len =
sizeof(http_buf) - 1;
132 memset(&th_v, 0,
sizeof(th_v));
133 memset(&f, 0,
sizeof(f));
134 memset(&ssn, 0,
sizeof(ssn));
140 f.
proto = IPPROTO_TCP;
155 "(msg:\"http header test\"; "
156 "content:\"CO\"; depth:4; http_cookie; "
187 static int DetectEngineHttpCookieTest03(
void)
193 uint8_t http_buf[] =
"CONNECT /index.html HTTP/1.0\r\n"
194 "Cookie: CONNECT\r\n"
195 "Host: www.onetwothreefourfivesixseven.org\r\n\r\n";
196 uint32_t http_len =
sizeof(http_buf) - 1;
199 memset(&th_v, 0,
sizeof(th_v));
200 memset(&f, 0,
sizeof(f));
201 memset(&ssn, 0,
sizeof(ssn));
207 f.
proto = IPPROTO_TCP;
222 "(msg:\"http header test\"; "
223 "content:!\"ECT\"; depth:4; http_cookie; "
254 static int DetectEngineHttpCookieTest04(
void)
260 uint8_t http_buf[] =
"CONNECT /index.html HTTP/1.0\r\n"
261 "Cookie: CONNECT\r\n"
262 "Host: www.onetwothreefourfivesixseven.org\r\n\r\n";
263 uint32_t http_len =
sizeof(http_buf) - 1;
266 memset(&th_v, 0,
sizeof(th_v));
267 memset(&f, 0,
sizeof(f));
268 memset(&ssn, 0,
sizeof(ssn));
274 f.
proto = IPPROTO_TCP;
289 "(msg:\"http header test\"; "
290 "content:\"ECT\"; depth:4; http_cookie; "
321 static int DetectEngineHttpCookieTest05(
void)
327 uint8_t http_buf[] =
"CONNECT /index.html HTTP/1.0\r\n"
328 "Cookie: CONNECT\r\n"
329 "Host: www.onetwothreefourfivesixseven.org\r\n\r\n";
330 uint32_t http_len =
sizeof(http_buf) - 1;
333 memset(&th_v, 0,
sizeof(th_v));
334 memset(&f, 0,
sizeof(f));
335 memset(&ssn, 0,
sizeof(ssn));
341 f.
proto = IPPROTO_TCP;
356 "(msg:\"http header test\"; "
357 "content:!\"CON\"; depth:4; http_cookie; "
388 static int DetectEngineHttpCookieTest06(
void)
394 uint8_t http_buf[] =
"CONNECT /index.html HTTP/1.0\r\n"
395 "Cookie: CONNECT\r\n"
396 "Host: www.onetwothreefourfivesixseven.org\r\n\r\n";
397 uint32_t http_len =
sizeof(http_buf) - 1;
400 memset(&th_v, 0,
sizeof(th_v));
401 memset(&f, 0,
sizeof(f));
402 memset(&ssn, 0,
sizeof(ssn));
408 f.
proto = IPPROTO_TCP;
423 "(msg:\"http header test\"; "
424 "content:\"ECT\"; offset:3; http_cookie; "
455 static int DetectEngineHttpCookieTest07(
void)
461 uint8_t http_buf[] =
"CONNECT /index.html HTTP/1.0\r\n"
462 "Cookie: CONNECT\r\n"
463 "Host: www.onetwothreefourfivesixseven.org\r\n\r\n";
464 uint32_t http_len =
sizeof(http_buf) - 1;
467 memset(&th_v, 0,
sizeof(th_v));
468 memset(&f, 0,
sizeof(f));
469 memset(&ssn, 0,
sizeof(ssn));
475 f.
proto = IPPROTO_TCP;
490 "(msg:\"http header test\"; "
491 "content:!\"CO\"; offset:3; http_cookie; "
522 static int DetectEngineHttpCookieTest08(
void)
528 uint8_t http_buf[] =
"CONNECT /index.html HTTP/1.0\r\n"
529 "Cookie: CONNECT\r\n"
530 "Host: www.onetwothreefourfivesixseven.org\r\n\r\n";
531 uint32_t http_len =
sizeof(http_buf) - 1;
534 memset(&th_v, 0,
sizeof(th_v));
535 memset(&f, 0,
sizeof(f));
536 memset(&ssn, 0,
sizeof(ssn));
542 f.
proto = IPPROTO_TCP;
557 "(msg:\"http header test\"; "
558 "content:!\"ECT\"; offset:3; http_cookie; "
589 static int DetectEngineHttpCookieTest09(
void)
595 uint8_t http_buf[] =
"CONNECT /index.html HTTP/1.0\r\n"
596 "Cookie: CONNECT\r\n"
597 "Host: www.onetwothreefourfivesixseven.org\r\n\r\n";
598 uint32_t http_len =
sizeof(http_buf) - 1;
601 memset(&th_v, 0,
sizeof(th_v));
602 memset(&f, 0,
sizeof(f));
603 memset(&ssn, 0,
sizeof(ssn));
609 f.
proto = IPPROTO_TCP;
624 "(msg:\"http header test\"; "
625 "content:\"CON\"; offset:3; http_cookie; "
656 static int DetectEngineHttpCookieTest10(
void)
662 uint8_t http_buf[] =
"CONNECT /index.html HTTP/1.0\r\n"
663 "Cookie: CONNECT\r\n"
664 "Host: www.onetwothreefourfivesixseven.org\r\n\r\n";
665 uint32_t http_len =
sizeof(http_buf) - 1;
668 memset(&th_v, 0,
sizeof(th_v));
669 memset(&f, 0,
sizeof(f));
670 memset(&ssn, 0,
sizeof(ssn));
676 f.
proto = IPPROTO_TCP;
691 "(msg:\"http header test\"; "
692 "content:\"CO\"; http_cookie; "
693 "content:\"EC\"; within:4; http_cookie; "
724 static int DetectEngineHttpCookieTest11(
void)
730 uint8_t http_buf[] =
"CONNECT /index.html HTTP/1.0\r\n"
731 "Cookie: CONNECT\r\n"
732 "Host: www.onetwothreefourfivesixseven.org\r\n\r\n";
733 uint32_t http_len =
sizeof(http_buf) - 1;
736 memset(&th_v, 0,
sizeof(th_v));
737 memset(&f, 0,
sizeof(f));
738 memset(&ssn, 0,
sizeof(ssn));
744 f.
proto = IPPROTO_TCP;
759 "(msg:\"http header test\"; "
760 "content:\"CO\"; http_cookie; "
761 "content:!\"EC\"; within:3; http_cookie; "
792 static int DetectEngineHttpCookieTest12(
void)
798 uint8_t http_buf[] =
"CONNECT /index.html HTTP/1.0\r\n"
799 "Cookie: CONNECT\r\n"
800 "Host: www.onetwothreefourfivesixseven.org\r\n\r\n";
801 uint32_t http_len =
sizeof(http_buf) - 1;
804 memset(&th_v, 0,
sizeof(th_v));
805 memset(&f, 0,
sizeof(f));
806 memset(&ssn, 0,
sizeof(ssn));
812 f.
proto = IPPROTO_TCP;
827 "(msg:\"http header test\"; "
828 "content:\"CO\"; http_cookie; "
829 "content:\"EC\"; within:3; http_cookie; "
860 static int DetectEngineHttpCookieTest13(
void)
866 uint8_t http_buf[] =
"CONNECT /index.html HTTP/1.0\r\n"
867 "Cookie: CONNECT\r\n"
868 "Host: www.onetwothreefourfivesixseven.org\r\n\r\n";
869 uint32_t http_len =
sizeof(http_buf) - 1;
872 memset(&th_v, 0,
sizeof(th_v));
873 memset(&f, 0,
sizeof(f));
874 memset(&ssn, 0,
sizeof(ssn));
880 f.
proto = IPPROTO_TCP;
895 "(msg:\"http header test\"; "
896 "content:\"CO\"; http_cookie; "
897 "content:!\"EC\"; within:4; http_cookie; "
928 static int DetectEngineHttpCookieTest14(
void)
934 uint8_t http_buf[] =
"CONNECT /index.html HTTP/1.0\r\n"
935 "Cookie: CONNECT\r\n"
936 "Host: www.onetwothreefourfivesixseven.org\r\n\r\n";
937 uint32_t http_len =
sizeof(http_buf) - 1;
940 memset(&th_v, 0,
sizeof(th_v));
941 memset(&f, 0,
sizeof(f));
942 memset(&ssn, 0,
sizeof(ssn));
948 f.
proto = IPPROTO_TCP;
963 "(msg:\"http header test\"; "
964 "content:\"CO\"; http_cookie; "
965 "content:\"EC\"; distance:2; http_cookie; "
996 static int DetectEngineHttpCookieTest15(
void)
1002 uint8_t http_buf[] =
"CONNECT /index.html HTTP/1.0\r\n"
1003 "Cookie: CONNECT\r\n"
1004 "Host: www.onetwothreefourfivesixseven.org\r\n\r\n";
1005 uint32_t http_len =
sizeof(http_buf) - 1;
1008 memset(&th_v, 0,
sizeof(th_v));
1009 memset(&f, 0,
sizeof(f));
1010 memset(&ssn, 0,
sizeof(ssn));
1016 f.
proto = IPPROTO_TCP;
1031 "(msg:\"http header test\"; "
1032 "content:\"CO\"; http_cookie; "
1033 "content:!\"EC\"; distance:3; http_cookie; "
1064 static int DetectEngineHttpCookieTest16(
void)
1070 uint8_t http_buf[] =
"CONNECT /index.html HTTP/1.0\r\n"
1071 "Cookie: CONNECT\r\n"
1072 "Host: www.onetwothreefourfivesixseven.org\r\n\r\n";
1073 uint32_t http_len =
sizeof(http_buf) - 1;
1076 memset(&th_v, 0,
sizeof(th_v));
1077 memset(&f, 0,
sizeof(f));
1078 memset(&ssn, 0,
sizeof(ssn));
1084 f.
proto = IPPROTO_TCP;
1099 "(msg:\"http header test\"; "
1100 "content:\"CO\"; http_cookie; "
1101 "content:\"EC\"; distance:3; http_cookie; "
1132 static int DetectEngineHttpCookieTest17(
void)
1138 uint8_t http_buf[] =
"CONNECT /index.html HTTP/1.0\r\n"
1139 "Cookie: CONNECT\r\n"
1140 "Host: www.onetwothreefourfivesixseven.org\r\n\r\n";
1141 uint32_t http_len =
sizeof(http_buf) - 1;
1144 memset(&th_v, 0,
sizeof(th_v));
1145 memset(&f, 0,
sizeof(f));
1146 memset(&ssn, 0,
sizeof(ssn));
1152 f.
proto = IPPROTO_TCP;
1167 "(msg:\"http header test\"; "
1168 "content:\"CO\"; http_cookie; "
1169 "content:!\"EC\"; distance:2; http_cookie; "
1200 static int DetectHttpCookieTest01(
void)
1207 "(msg:\"Testing http_cookie\"; http_cookie;sid:1;)");
1217 static int DetectHttpCookieTest02(
void)
1223 "(msg:\"Testing http_cookie\"; content:\"me\"; "
1224 "http_cookie:woo; sid:1;)");
1231 static int DetectHttpCookieSigTest01(
void)
1234 uint8_t httpbuf1[] =
"POST / HTTP/1.0\r\nUser-Agent: Mozilla/1.0\r\nCookie:"
1235 " hellocatchme\r\n\r\n";
1236 uint32_t httplen1 =
sizeof(httpbuf1) - 1;
1242 memset(&th_v, 0,
sizeof(th_v));
1243 memset(&f, 0,
sizeof(f));
1244 memset(&ssn, 0,
sizeof(ssn));
1250 f.
proto = IPPROTO_TCP;
1266 "\"HTTP cookie\"; content:\"me\"; "
1267 "http_cookie; sid:1;)");
1271 "cookie\"; content:\"go\"; http_cookie; sid:2;)");
1299 static int DetectHttpCookieSigTest02(
void)
1302 uint8_t httpbuf1[] =
"POST / HTTP/1.0\r\nUser-Agent: Mozilla/1.0\r\n\r\n";
1303 uint32_t httplen1 =
sizeof(httpbuf1) - 1;
1309 memset(&th_v, 0,
sizeof(th_v));
1310 memset(&f, 0,
sizeof(f));
1311 memset(&ssn, 0,
sizeof(ssn));
1317 f.
proto = IPPROTO_TCP;
1333 "\"HTTP cookie\"; content:\"me\"; "
1334 "http_cookie; sid:1;)");
1361 static int DetectHttpCookieSigTest03(
void)
1364 uint8_t httpbuf1[] =
"POST / HTTP/1.0\r\nUser-Agent: Mozilla/1.0\r\n"
1365 "Cookie: dummy\r\n\r\n";
1366 uint32_t httplen1 =
sizeof(httpbuf1) - 1;
1372 memset(&th_v, 0,
sizeof(th_v));
1373 memset(&f, 0,
sizeof(f));
1374 memset(&ssn, 0,
sizeof(ssn));
1380 f.
proto = IPPROTO_TCP;
1396 "\"HTTP cookie\"; content:\"boo\"; "
1397 "http_cookie; sid:1;)");
1424 static int DetectHttpCookieSigTest04(
void)
1427 uint8_t httpbuf1[] =
"POST / HTTP/1.0\r\nUser-Agent: Mozilla/1.0\r\n"
1428 "Cookie: dummy\r\n\r\n";
1429 uint32_t httplen1 =
sizeof(httpbuf1) - 1;
1435 memset(&th_v, 0,
sizeof(th_v));
1436 memset(&f, 0,
sizeof(f));
1437 memset(&ssn, 0,
sizeof(ssn));
1443 f.
proto = IPPROTO_TCP;
1459 "\"HTTP cookie\"; content:!\"boo\"; "
1460 "http_cookie; sid:1;)");
1487 static int DetectHttpCookieSigTest05(
void)
1490 uint8_t httpbuf1[] =
"POST / HTTP/1.0\r\nUser-Agent: Mozilla/1.0\r\n"
1491 "Cookie: DuMmY\r\n\r\n";
1492 uint32_t httplen1 =
sizeof(httpbuf1) - 1;
1498 memset(&th_v, 0,
sizeof(th_v));
1499 memset(&f, 0,
sizeof(f));
1500 memset(&ssn, 0,
sizeof(ssn));
1506 f.
proto = IPPROTO_TCP;
1522 "\"HTTP cookie\"; content:\"dummy\"; nocase; "
1523 "http_cookie; sid:1;)");
1550 static int DetectHttpCookieSigTest06(
void)
1553 uint8_t httpbuf1[] =
"POST / HTTP/1.0\r\nUser-Agent: Mozilla/1.0\r\n"
1554 "Cookie: DuMmY\r\n\r\n";
1555 uint32_t httplen1 =
sizeof(httpbuf1) - 1;
1561 memset(&th_v, 0,
sizeof(th_v));
1562 memset(&f, 0,
sizeof(f));
1563 memset(&ssn, 0,
sizeof(ssn));
1569 f.
proto = IPPROTO_TCP;
1585 "\"HTTP cookie\"; content:\"dummy\"; "
1586 "http_cookie; nocase; sid:1;)");
1613 static int DetectHttpCookieSigTest07(
void)
1616 uint8_t httpbuf1[] =
"POST / HTTP/1.0\r\nUser-Agent: Mozilla/1.0\r\n"
1617 "Cookie: dummy\r\n\r\n";
1618 uint32_t httplen1 =
sizeof(httpbuf1) - 1;
1624 memset(&th_v, 0,
sizeof(th_v));
1625 memset(&f, 0,
sizeof(f));
1626 memset(&ssn, 0,
sizeof(ssn));
1632 f.
proto = IPPROTO_TCP;
1648 "\"HTTP cookie\"; content:!\"dummy\"; "
1649 "http_cookie; sid:1;)");
1678 static int DetectHttpCookieSigTest08(
void)
1680 uint8_t httpbuf_request[] =
"GET / HTTP/1.1\r\n"
1681 "User-Agent: Mozilla/1.0\r\n"
1683 uint32_t httpbuf_request_len =
sizeof(httpbuf_request) - 1;
1685 uint8_t httpbuf_response[] =
"HTTP/1.1 200 OK\r\n"
1686 "Set-Cookie: response_user_agent\r\n"
1688 uint32_t httpbuf_response_len =
sizeof(httpbuf_response) - 1;
1696 memset(&th_v, 0,
sizeof(th_v));
1697 memset(&f, 0,
sizeof(f));
1698 memset(&ssn, 0,
sizeof(ssn));
1702 f.
proto = IPPROTO_TCP;
1726 "(flow:to_client; content:\"response_user_agent\"; "
1727 "http_cookie; sid:1;)");
1735 httpbuf_request_len);
1747 httpbuf_response_len);
1769 static int DetectHttpCookieSigTest09(
void)
1771 uint8_t httpbuf_request[] =
"GET / HTTP/1.1\r\n"
1772 "Cookie: request_user_agent\r\n"
1773 "User-Agent: Mozilla/1.0\r\n"
1775 uint32_t httpbuf_request_len =
sizeof(httpbuf_request) - 1;
1777 uint8_t httpbuf_response[] =
"HTTP/1.1 200 OK\r\n"
1778 "Set-Cookie: response_user_agent\r\n"
1780 uint32_t httpbuf_response_len =
sizeof(httpbuf_response) - 1;
1787 memset(&th_v, 0,
sizeof(th_v));
1788 memset(&f, 0,
sizeof(f));
1789 memset(&ssn, 0,
sizeof(ssn));
1793 f.
proto = IPPROTO_TCP;
1816 "(flow:to_server; content:\"request_user_agent\"; "
1817 "http_cookie; sid:1;)");
1820 "(flow:to_client; content:\"response_user_agent\"; "
1821 "http_cookie; sid:2;)");
1829 httpbuf_request_len);
1841 httpbuf_response_len);
1864 UtRegisterTest(
"DetectHttpCookieTest01", DetectHttpCookieTest01);
1865 UtRegisterTest(
"DetectHttpCookieTest02", DetectHttpCookieTest02);
1866 UtRegisterTest(
"DetectHttpCookieSigTest01", DetectHttpCookieSigTest01);
1867 UtRegisterTest(
"DetectHttpCookieSigTest02", DetectHttpCookieSigTest02);
1868 UtRegisterTest(
"DetectHttpCookieSigTest03", DetectHttpCookieSigTest03);
1869 UtRegisterTest(
"DetectHttpCookieSigTest04", DetectHttpCookieSigTest04);
1870 UtRegisterTest(
"DetectHttpCookieSigTest05", DetectHttpCookieSigTest05);
1871 UtRegisterTest(
"DetectHttpCookieSigTest06", DetectHttpCookieSigTest06);
1872 UtRegisterTest(
"DetectHttpCookieSigTest07", DetectHttpCookieSigTest07);
1873 UtRegisterTest(
"DetectHttpCookieSigTest08", DetectHttpCookieSigTest08);
1874 UtRegisterTest(
"DetectHttpCookieSigTest09", DetectHttpCookieSigTest09);
1875 UtRegisterTest(
"DetectEngineHttpCookieTest01", DetectEngineHttpCookieTest01);
1876 UtRegisterTest(
"DetectEngineHttpCookieTest02", DetectEngineHttpCookieTest02);
1877 UtRegisterTest(
"DetectEngineHttpCookieTest03", DetectEngineHttpCookieTest03);
1878 UtRegisterTest(
"DetectEngineHttpCookieTest04", DetectEngineHttpCookieTest04);
1879 UtRegisterTest(
"DetectEngineHttpCookieTest05", DetectEngineHttpCookieTest05);
1880 UtRegisterTest(
"DetectEngineHttpCookieTest06", DetectEngineHttpCookieTest06);
1881 UtRegisterTest(
"DetectEngineHttpCookieTest07", DetectEngineHttpCookieTest07);
1882 UtRegisterTest(
"DetectEngineHttpCookieTest08", DetectEngineHttpCookieTest08);
1883 UtRegisterTest(
"DetectEngineHttpCookieTest09", DetectEngineHttpCookieTest09);
1884 UtRegisterTest(
"DetectEngineHttpCookieTest10", DetectEngineHttpCookieTest10);
1885 UtRegisterTest(
"DetectEngineHttpCookieTest11", DetectEngineHttpCookieTest11);
1886 UtRegisterTest(
"DetectEngineHttpCookieTest12", DetectEngineHttpCookieTest12);
1887 UtRegisterTest(
"DetectEngineHttpCookieTest13", DetectEngineHttpCookieTest13);
1888 UtRegisterTest(
"DetectEngineHttpCookieTest14", DetectEngineHttpCookieTest14);
1889 UtRegisterTest(
"DetectEngineHttpCookieTest15", DetectEngineHttpCookieTest15);
1890 UtRegisterTest(
"DetectEngineHttpCookieTest16", DetectEngineHttpCookieTest16);
1891 UtRegisterTest(
"DetectEngineHttpCookieTest17", DetectEngineHttpCookieTest17);